PDA

View Full Version : مبتدی: گرفتن هندل تمامی پنجره ای باز



mr-adler
شنبه 14 آبان 1390, 05:10 صبح
سلام
روز همگی بخیر
چطوری میشه هندل تمامی پنجره های باز شده را گرفت؟
تابع findwindow فقط هندل پنجره ای که مشخص میکنیم رو برمیگردونه نه هندل تمامی پنجره های باز.

mr-adler
شنبه 14 آبان 1390, 16:36 عصر
سلام دوستانی که فکر میکنند احیانا سرچ نکردم یا تلاش نکردم ببینن تو تاپیک زیر هم این سوال پرسیده شده اما بیجواب مونده متاسفانه:
تاپیک بی جواب (http://barnamenevis.org/showthread.php?181810-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%AA%D8%A7%D8%A8%D8%B9-API&highlight=%D9%87%D9%86%D8%AF%D9%84+%D9%BE%D9%86%D8 %AC%D8%B1%D9%87):ناراحت::افسرده:

حداقل اسم توابع رو بگید سرچ میکنم از سایت های انگلیسی بلکه متوجه شدم.:ناراحت:

sajjad_india
شنبه 14 آبان 1390, 18:01 عصر
اينجا سر بزن
لينك (http://www.vb6.us/tutorials/activate-window-api)

mr-adler
شنبه 14 آبان 1390, 18:27 عصر
ممنونم بسیار
فقط اگه منابع دیگه ای هم در اختیار دارید معرفی کنید تا ایشالا بتونیم استفاده بهتر رو ببریم.
مثل سورس و ...

باز هم ممنونم:قلب:

sajjad_india
شنبه 14 آبان 1390, 18:30 عصر
آره دارم : GOOGLE

aria1o
شنبه 14 آبان 1390, 19:09 عصر
دوست عزیز شاید این سورس کمکت کنه

mr-adler
شنبه 14 آبان 1390, 19:30 عصر
دوست عزیز شاید این سورس کمکت کنه
مطمئنن میتونه کمک کنه. ممنونم بسیار:قلب:
راستی خیلی وقت میبره این کد ها رو بررسی کنم . امیدوارم به مشکلی بر نخورم:لبخند:

آره دارم : GOOGLE
2 روزه دارم جستجو میکنم ولی هر موردی که پیدا میکنم هر کدوم یکم از اولش گفته و تا اخرش نرفته . مثلا پرسیدن چطوری هندل رو بدست بیارم؟ با findwindow
در حد عمومی یه چیزایی یاد گرفتیم ولی این مورد رو ندیدم ....
به هر حال ممنونم از 2 دوست عزیزی که راهنمایی کردن :قلب:

ASedJavad
دوشنبه 16 آبان 1390, 18:39 عصر
سلام
احتمالا این بتونه کارت رو راه بندازه:

Private Declare Function FindWindowExA _
Lib "user32.dll" (ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszCaption As String) As Long
Private Sub Form_Load()
Me.AutoRedraw = True
x = 0
Do
x = FindWindowEx(0, x, vbNullString, vbNullString)
Print x
Loop While x > 0
End Sub

این تابع در حقیقت میاد هندل زیر پنجره ای که هندل پنجره مادرش hwndParent هست و بعد از hwndChildAfter قرار داره و کلاس اون lpszClass و عنوانش lpszCaption هست رو برمیگردونه
خب مسلما اگه هندل مادر رو صفر بهش بدیم، احتمالا میشه همون چیزی که شما میخوای

just4froum
دوشنبه 16 آبان 1390, 20:25 عصر
با سلام

بله اين كد كار ميكنه فقط يه نكته كوچيكي كه جناب asedjavad اشتباه كردن.
كد رو بدين شكل بنويسيد فرقش فقط توي يك A است.



Private Declare Function FindWindowExA _
Lib "user32.dll" (ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszCaption As String) As Long
Private Sub Form_Load()
Me.AutoRedraw = True
x = 0
Do
x = FindWindowExA(0, x, vbNullString, vbNullString)
Print x
Loop While x > 0
End Sub

mr-adler
سه شنبه 17 آبان 1390, 00:36 صبح
سلام ممنونم
فقط اگه این یه مورد رو امکانش هست یکم توضیح بدید.
فرق FindWindowExA با FindWindowEx چیه؟
FindWindowEx هندل یک شی از یک پنجره رو با دادن هندل پنجره بدست میاره. اما FindWindowExA چی؟؟؟

این تابع در حقیقت میاد هندل زیر پنجره ای که هندل پنجره مادرش hwndParent هست و بعد از hwndChildAfter قرار داره و کلاس اون lpszClass و عنوانش lpszCaption هست رو برمیگردونه
:متفکر: زیر پنجره یعنی شی داخل پنجره؟
ممنونم...

Felony
سه شنبه 17 آبان 1390, 06:04 صبح
برای به دست آوردن هندل تمام پنجره های باز میتونید از تابع EnumWindows (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx) که یک Callback Function هست استفاده کنید .