PDA

نسخه کامل مشاهده نسخه کامل : خوندن آیتم های لیست باکس یک نرم افزار دیگر



ULF_VB6
27-12-2007, 12:49
سلام
من باید برنامه ای بنویسم که میاد آیتم های داخل یه لیست باکس رو که داخل برنامه دیگه ای هستش رو میخونه و ذخیره میکنه.

حالا مشکل اینجاست که hwnd اون لیست باکس رو درآوردم ولی حالا نمی دونم چه جوری باید آیتم ها رو بخونم.
اگه راهنماییم کنید ممنون میشم. فقط در این حد میدونم که باید از توابع api استفاده کنم ولی از کدومش نمیدونم.
حتی اگه اسم تابع رو هم بهم بگید. بقیشو خودم انجام میدم. :31:
در ضمن خیلی خیلی عجله دارم. باید هرچه سریعتر این برنامه رو آماده کنم و الا .... :18: :19:

m3hrz4d
27-12-2007, 16:28
باید از تابع SendMessage استفاده کنین با ثابت LB_GETTEXT :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ULF_VB6
30-12-2007, 07:45
خيلي لطف كردي. واقعا ممنونم.
برم ببينم مي‌تونم ازش استفاده كنم.

ULF_VB6
30-12-2007, 16:33
آقا یه مشکل

من اینو تست کردم، ولی مقدار LParam رو خالی میده.
مقدار برگشتی تابع هم 4 میشه.
4 یعنی چی؟

راستی اگه بخوام متن toolTip یکی از آیتم های لیست باکس رو در بیارم، اون موقع باید از چه ثابتی استفاده کنم.
من گشتم ولی چیزی پیدا نکردم.

اگه لطف کنی یه توضیحاتی هم راجع به این تابع بدی ممنون میشم

m3hrz4d
31-12-2007, 01:05
طول بافر رو به اندازه کافی گرفتی؟ میتونی مثلا 255 بگیری یا با همین تابع SendMessage و ثابت LB_GETTEXTLENGTH اول طول آیتم رو بگیری و بعد خود متن رو.اون 4 ی که برگشت میداده احتمالا طول آیتم بوده.اگه مشکل داشته باشه هم 1- برگشت میده.
مثلا اگه بخواهی متن آیتم اول لیست باکس (که حالا توی فرم خودمون هست واسه راحتی) رو بدست بیاری:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای پیدا کردن متن Tooltip هم چیز بدرد بخوری پیدا نکردم. این منبع خود مایکروسافت در مورد ToolTip :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ULF_VB6
31-12-2007, 12:19
دستت درد نکنه.
ولی مشکل من حل نشد.

من تست کردم. وقتی یه ListBox توی فرم خودم گذاشتم و Hwnd اونو دادم، متن رو نشون داد ولی برای این برنامه هه یه رشته خالی برمیگردونه.
یه چیزه دیگه. این لیست باکسی که توی این برنامه هست. کنار هر آیتم یه عکس هم گذاشته. به نظرت می تونه اشکال کار از این باشه. یعنی باید نوع متغیر Buffer رو تغییر بدم؟
چی بذارم؟ که جواب بده.

این لینکی هم که برای tooltip دادی درباره خود شئ tooltip توضیح داده. درباره چیزی که من میخوام هیچی ننوشته.
چجوری میشه متنش رو خوند؟

اصلا یه سوال دیگه؟
راهی هست که بشه یه شئ رو که داخل یه برنامه دیگه هست رو بگیری و مثل آبجکت های خود vb باهاش رفتارکنی.
یعنی بتونی از خصوصیاتش استفاده کنی و ...
اگه راهی باشه (البته فکر نکنم باشه!!!) خیلی خوب میشه.

یه راهه دیگه هم فکر کنم باشه.
میشه با استفاده از پروسس های برنامه اطلاعاتی که برنامه داره ازشون استفاده میکنه رو تشخیص داد.
باید عملی باشه. چون برای game hacking از همین روش استفاده میشه. یعنی میان اول آدرس پروسسهای مورد نظرشون رو در میارن و بعد مقداری رو که میخوان بهش میدن.
البته اونا معمولا با اعداد کار میکنن. من میخام ببینم میشه با رشته ها هم همین کار رو کرد؟

m3hrz4d
01-01-2008, 07:02
همونطور که خودت گفتی کنار آیتم یک عکس گذشته بنابراین بعید میدونم این شی یک ListBox ساده باشه(با اسم کلاس "ListBox") بنابراین پیغامی که در موردش استفاده میکنی طبیعیه که جواب نمیده. با استفاده از ای پی آی GetClassName , اسم کلاس این شی رو پیدا کن ببینم چه شی ی هست.
-
درسته اون لینک در مورد خود ToolTip بود منم گشتم چیز بدرد بخوری پیدا نکردم اما حتما یه راهی داره.
علت پیچیدگیش هم اینه که ToolTip خودش یک Window هست و hWnd خودش رو داره و یک خصوصیت برای یک شی مثل ListBox نیست که بشه از طریق ListBox به راحتی پیداش کرد.
-
دقیقا با ای پی آی ویندوز میشه خصوصیت های همه ی شی های موجود توی ویندوز رو تغییر داد.حتی وقتی توی برنامه ی خودت هم خصوصیت شی ها رو تغییر میدی در اصل ای پی آی مربوطه فراخوانی میشه و اون خصوصیت مثلا Caption یک Label تغییر میکنه.البته این تغییر وقتی امکان داره که شی مورد نظر یا از شی های استاندارد ویندوز باشه تا بدونی با استفاده از چه ای پی آی یی خصوصیت ها رو تغییر بدی یا اون شی مثل شی های استاندارد ویندوز عمل کنه و به پیغام های مورد نظر درست پاسخ بده.اگه یه شی کلا Custom باشه و درست به پیغام های مربوط به خصوصیاتش پاسخ نده یا اون پیغام ها رو ندونی با ای پی آی های ازین دست نمیشه روش کار کرد و همونطور که خودت گفتی یه راهش تغییر Memory مربوط به Process هست

ULF_VB6
01-01-2008, 10:32
اسم کلاس رو قبلا دیدم اینه SysListView32
ولی اسم کلاس لیست باکس های خود Vb یه چیز دیگست (ThunderListBox)

خوب tooltip هم جزو خواص اشیا محسوب میشه. پس باید یه جوری بشه دیتکتش کرد.

این رو هم میدونم که vb هم از api ها استفاده میکنه، حتی برای کوچکترین اعمالش.
خب من یه سوال دیگه هم پرسیدم. این که میشه با process ها string رو هم تشخیص داد؟ و تغییراتی توش اعمال کرد.
آخه این یکی رو من جایی ندیدم. می خواستم بینم مثل همون کار با اعداد میمونه، یعنی به همون روش میشه با string هم کار کرد؟