امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
خواندن محتویات ListView
نویسنده پیام
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #1
خواندن محتویات ListView
چطور میشه محتویات یک ListView برنامه در حال اجرا رو خوند؟
فقط ListView رو می خوام نه ListBox یا ... .

۰۶-دى-۱۳۸۵, ۱۹:۱۱:۱۹
وب سایت ارسال‌ها
پاسخ
pswin آفلاین
كاربر دو ستاره
**

ارسال‌ها: 151
موضوع‌ها: 11
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 0
( 19 تشکر در 11 ارسال )
ارسال: #2
RE: خواندن محتویات ListView
از تابع getmessage و postmessage استفاده کن.

۱۱-مرداد-۱۳۸۶, ۱۱:۲۲:۴۲
وب سایت ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #3
RE: خواندن محتویات ListView
واسه ListView خود برنامه ای که بازش کردم میشه ولی در مورد برنامه های دیگه نمیشه (اون برنامه بسته میشه)
مشکل اصلی من اینه

(آخرین ویرایش در این ارسال: ۱۳-مرداد-۱۳۸۶, ۱۸:۴۵:۱۳، توسط veyskarami.)
۱۳-مرداد-۱۳۸۶, ۱۸:۴۱:۴۶
وب سایت ارسال‌ها
پاسخ
pswin آفلاین
كاربر دو ستاره
**

ارسال‌ها: 151
موضوع‌ها: 11
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 0
( 19 تشکر در 11 ارسال )
ارسال: #4
RE: خواندن محتویات ListView
'گفتم که با توابع postmessage، getmessage و توابع مربوط به کنترل صف برنامه کار کن و با ترجمه lparam و wparam می تونی مقادیر داخل لیست رو پیدا کنی. تنها چیزی که احتیاج داری پیدا کردن ثابت های مربوط به list view هست که اونها رو هم میتونی با برنامه SPY++ که همراه ویژوال سی 6 هست خیلی راحت پیدا کنی.

۱۴-مرداد-۱۳۸۶, ۰۰:۵۵:۱۷
وب سایت ارسال‌ها
پاسخ
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #5
RE: خواندن محتویات ListView
اگه خواستی ستون اول رو پیدا کنی iSubItem رو برابر 0 قرار بده
I هم شماره ردیفت هست که بازم از 0 شروع میشه
نکته آخر هم اینکه مواد لازمش رو دیگه ننوشتمAmaze همه این Type ها(حالا خوبه یدونه بیشتر نیستا Whistle LVITEM) یا ثابت ها رو توی API-Viewer میتونی پیدا کنی

کد:
Public Function ListView_GetItemText(I As Long, iSubItem As Long) As String
    Dim lpPitem As LVITEM
    Dim SubItemText As String
    SubItemText = String$(28, 0)
    lpPitem.iSubItem = iSubItem
    lpPitem.cchTextMax = 28
    lpPitem.pszText = SubItemText
  
    Call SendMessage(hwndLV, LVM_GETITEMTEXT, ByVal I, lpPitem)
    ListView_GetItemText = Left$(lpPitem.pszText, InStr(lpPitem.pszText, vbNullChar) - 1)
End Function

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

(آخرین ویرایش در این ارسال: ۱۴-مرداد-۱۳۸۶, ۰۴:۰۴:۲۳، توسط Pedram_HookEx.)
۱۴-مرداد-۱۳۸۶, ۰۴:۰۰:۲۸
ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #6
RE: خواندن محتویات ListView
کدی که خودم قبلا نوشته بودم کار می کرد (منتها تو همون پروسه خودم) یعنی ایتم های لیست ویو خودمو نمایش می داد اما وقتی واسه برنامه ها و پنجره های دیگه استفاده می کردم باعث کرش شدن اون برنامه می شد.

این کد رو هم که پدرام جان زحمتشو کشیدن تست کردم ولی متاسفانه خروجی بهم نداد.

کد:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Dim j As Long
Private Type LVITEM
iSubItem As Integer
cchTextMax As Integer
pszText As String
End Type
Private Function ListView_GetItemText(I As Long, iSubItem As Long) As String
Dim lpPitem As LVITEM
Dim SubItemText As String
SubItemText = String$(28, 0)
lpPitem.iSubItem = iSubItem
lpPitem.cchTextMax = 28
lpPitem.pszText = SubItemText
Call SendMessage(hwndLV, LVM_GETITEMTEXT, ByVal I, lpPitem)
ListView_GetItemText = Left$(lpPitem.pszText, InStr(lpPitem.pszText, vbNullChar) - 1)
End Function
Private Sub Command1_Click()
j = FindWindow("CabinetWClass", 0)
j = FindWindowEx(j, 0, "SHELLDLL_DefVie", 0)
j = FindWindowEx(j, 0, "DUIViewWndClassName", 0)
j = FindWindowEx(j, 0, "DirectUIHWND", 0)
j = FindWindowEx(j, 0, "CtrlNotifySink", 0)
j = FindWindowEx(j, 0, "SysListView32", 0)
Text1.Text = ListView_GetItemText(j, 2)
End Sub

(آخرین ویرایش در این ارسال: ۱۴-مرداد-۱۳۸۶, ۱۱:۵۹:۵۳، توسط veyskarami.)
۱۴-مرداد-۱۳۸۶, ۱۱:۵۸:۲۰
وب سایت ارسال‌ها
پاسخ
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #7
RE: خواندن محتویات ListView
خوب اگه از كد بالا استفاده ميكني يه اشكال داره اونم توي قسمت Decelration هست كه جناب عالي LVM_GETITEMTEXT رو تعريف نكردي

ببين با اين حل ميشه يا نه

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

۱۴-مرداد-۱۳۸۶, ۱۴:۰۵:۳۳
ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #8
RE: خواندن محتویات ListView
حاجی من اینو با دلفی هم که انجام می دم (اونجا که دیگه نیازی به Declration و این حرفا نیست)باز هم جواب منفی می گیرم
من فکر می کنم ListView ها تو ویندوز Secure باشن Biggrin (البته تو پروسس خودت می تونی اینو انجام بدی)
که در این صورت باید از اینجکت استفاده کرد

(آخرین ویرایش در این ارسال: ۱۵-مرداد-۱۳۸۶, ۱۱:۱۴:۰۴، توسط veyskarami.)
۱۵-مرداد-۱۳۸۶, ۱۱:۱۱:۵۷
وب سایت ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #9
RE: خواندن محتویات ListView
pswin نوشته است:'گفتم که با توابع postmessage، getmessage و توابع مربوط به کنترل صف برنامه کار کن

با getmessage و postmessage هم نمیشه کاری کرد اگر هم بشه فقط تو پروسه خودمون میشه کنترل کرد که جواب سوال من نیست

(آخرین ویرایش در این ارسال: ۱۵-مرداد-۱۳۸۶, ۱۱:۱۷:۳۳، توسط veyskarami.)
۱۵-مرداد-۱۳۸۶, ۱۱:۱۶:۳۹
وب سایت ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #10
RE: خواندن محتویات ListView
برای کنترل فرمانهای صف مربوط به هر برنامه میتونین از hook استفاده کنین
The CallWndProc hook procedure is an application-defined or library-defined callback function that the system calls whenever the SendMessage function is called. Before passing the message to the destination window procedure, the system passes the message to the hook procedure. The hook procedure can examine the message; it cannot modify it.

CallWndProc is a placeholder for the application-defined or library-defined function name.

LRESULT CALLBACK CallWndProc(

int nCode, // hook code
WPARAM wParam, // current-process flag
LPARAM lParam // address of structure with message data
);


Parameters

nCode

Specifies whether the hook procedure must process the message. If nCode is HC_ACTION, the hook procedure must process the message. If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.

wParam

Specifies whether the message is sent by the current process. If the message is sent by the current process, it is nonzero; otherwise, it is NULL.

lParam

Pointer to a CWPSTRUCT structure that contains details about the message.



Return Values

The return value should be zero.

Remarks

The CallWndProc hook procedure can examine the message, but it cannot modify it. After the hook procedure returns control to the system, the message is passed to the window procedure.
An application installs the hook procedure by specifying the WH_CALLWNDPROC hook type and the address of the hook procedure in a call to the SetWindowsHookEx function.
The WM_CALLWNDPROC hook is called in the context of the thread that calls SendMessage, not the thread that receives the message.
۱۵-مرداد-۱۳۸۶, ۲۲:۳۴:۴۶
وب سایت ارسال‌ها
پاسخ
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #11
RE: خواندن محتویات ListView
حاجی اگه ممکنه فارسی بنویس که اگه کسی هم خواست از مطالبت استفاده کنه راحت تر بتونه مطالبتو متوجه بشه.

۱۶-مرداد-۱۳۸۶, ۱۰:۰۷:۳۴
وب سایت ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS