امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
پیدا کردن هندل یک شی که caption آن را نمیدانیم
نویسنده پیام
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #1
Question  پیدا کردن هندل یک شی که caption آن را نمیدانیم
سلام
برای گرفتن هندل class name یک شی که caption آن را نمیدانیم باید چیکار کنیم ؟

اصولا باید نام کلاس رو بدی تا هندل رو بده :
کد:
hWndMain = FindWindow("class name", vbNullString)
اما هندل زیر کلاس اونو میده واسه کروم تا زمانی که به جای vbNullString نام caption اون رو ندی درست کار نمیکنه

یه سرچی زدم دیدم میگن با FindWindowLike میشه هندل پنجره ای که نمیدونی رو پیدا کنی اما تو api در vb6 پیداش نکردم
یه سوال دیگه این که چرا نمیشه هندل address bar فایر فاکس رو گرفت؟
یعنی راه نداره ؟
(آخرین ویرایش در این ارسال: ۱۳-بهمن-۱۳۹۰, ۱۸:۱۴:۳۵، توسط crafcrab.)
۱۲-بهمن-۱۳۹۰, ۱۳:۲۳:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
civilmans آفلاین
كاربر دو ستاره
**

ارسال‌ها: 140
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۸

تشکرها : 131
( 266 تشکر در 107 ارسال )
ارسال: #2
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
FindWindowLike یک تابع api نیست سرچ کن میتونی تابع ش را پیدا کنی سورسش تو نت فراوانه
۱۲-بهمن-۱۳۹۰, ۲۲:۱۵:۱۳
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #3
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
این کدوم هست ؟
http://support.microsoft.com/kb/147659
http://bytes.com/topic/visual-basic-net/...ike-vb-net
http://www.xtremevbtalk.com/showthread.php?t=188324
در اصل دنبال هندل class name که بهش دادم میگردم
(آخرین ویرایش در این ارسال: ۱۳-بهمن-۱۳۹۰, ۱۷:۲۴:۲۷، توسط crafcrab.)
۱۳-بهمن-۱۳۹۰, ۱۶:۴۷:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
مهندس
توابع وتیپ های زیر چیزهایی هست که شما نیاز دارین
اولی مکان کرسر رو پیدا میکنه
دومی هندل پنجره ای که زیر کرسر هست
سومی هم از رو هندل کلاس اون پنجره رو میده
با این توابع شما میتونی کلاس پنجره مورد نظرتو پیدا کنی و تو برنامه اصلیت ازش استفاده کنی
کد:
Private Declare Function GetCursorPos Lib "user32" _
   (lpPoint As POINTAPI) As Long

Private Declare Function WindowFromPoint Lib "user32" (ByVal _
   xpoint As Long, ByVal ypoint As Long) As Long
  
Private Declare Function GetClassName Lib "user32" Alias _
   "GetClassNameA" (ByVal hwnd As Long, ByVal lpClass _
    As String, ByVal nMaxCount As Long) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۴-بهمن-۱۳۹۰, ۱۱:۱۱:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #5
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
با موس رو دارم ولی اینو نمیخوام
بدون کم موس میخوام این کار رو بکنم
همون طور که گفتم نام کلاس رو بدم و هندلشو بده
(آخرین ویرایش در این ارسال: ۱۴-بهمن-۱۳۹۰, ۱۲:۵۶:۳۷، توسط crafcrab.)
۱۴-بهمن-۱۳۹۰, ۱۲:۵۳:۳۷
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
(۱۴-بهمن-۱۳۹۰, ۱۲:۵۳:۳۷)crafcrab نوشته است: با موس رو دارم ولی اینو نمیخوام
بدون کم موس میخوام این کار رو بکنم
همون طور که گفتم نام کلاس رو بدم و هندلشو بده
مهندس پستمو یه بار دیگه بخون
اول باید با اون توابع یه برنامه بنویسی که بتونی اسم کلاس اون فورم رو بدست بیاری بعد که کلاس رو با اون برنامه بدست اوردی اونوقت برو تو برنامه اصلیت با تابع findwindow اسم کلاسشو بده و هندلشو بگیر



[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۴-بهمن-۱۳۹۰, ۱۸:۵۳:۵۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
civilmans آفلاین
كاربر دو ستاره
**

ارسال‌ها: 140
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۸

تشکرها : 131
( 266 تشکر در 107 ارسال )
ارسال: #7
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
این تابع فکر کنم کار شما را راه بندازه
کد:
Option Explicit
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long

Const GW_HWNDNEXT = 2
Const GW_CHILD = 5

'********************************************
'*Give it part of the window text your looking for
'*it will give you the hWnd
'*usefull for windows that text is like "[project] - microsoft visual basic [design]"
'*usage:
'*Msgbox FindWindowLike("visual basic")
'*Returns 0 if not found
'*******************************************

Function FindWindowLike(strPartOfCaption As String) As Long
Dim hWnd As Long
Dim strCurrentWindowText As String
Dim r As Integer

hWnd = GetForegroundWindow

Do Until hWnd = 0
strCurrentWindowText = Space$(255)
r = GetWindowText(hWnd, strCurrentWindowText, 255)
strCurrentWindowText = Left$(strCurrentWindowText, r)
'hWnd = GetWindow(hWnd, GW_CHILD)
If InStr(1, LCase(strCurrentWindowText), LCase(strPartOfCaption)) <> 0 Then GoTo Found
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop

Exit Function
Found:
FindWindowLike = hWnd
End Function
۱۵-بهمن-۱۳۹۰, ۰۱:۱۳:۰۴
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #8
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
(۱۴-بهمن-۱۳۹۰, ۱۸:۵۳:۵۴)lord_viper نوشته است: [quote='crafcrab' pid='164553' dateline='1328257417']
با موس رو دارم ولی اینو نمیخوام
بدون کم موس میخوام این کار رو بکنم
همون طور که گفتم نام کلاس رو بدم و هندلشو بده
مهندس پستمو یه بار دیگه بخون
اول باید با اون توابع یه برنامه بنویسی که بتونی اسم کلاس اون فورم رو بدست بیاری بعد که کلاس رو با اون برنامه بدست اوردی اونوقت برو تو برنامه اصلیت با تابع findwindow اسم کلاسشو بده و هندلشو بگیر


عزیز من اسم کلاس اون فورم رو دارم نیازی به این برنامه موس نیست

با findwindow و FindWindowEx کارم رو راه انداختم قبلا
اما مشکل اینه که برای این یکی پروسس کار نمیکنه
(آخرین ویرایش در این ارسال: ۱۷-بهمن-۱۳۹۰, ۱۸:۴۸:۵۳، توسط crafcrab.)
۱۵-بهمن-۱۳۹۰, ۲۲:۰۵:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
civilmans آفلاین
كاربر دو ستاره
**

ارسال‌ها: 140
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۸

تشکرها : 131
( 266 تشکر در 107 ارسال )
ارسال: #9
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
شما کدی را که من براتون گذاشتم اجرا کردید؟
فقط کافیه قسمتی از نام پنجره را بهش بدید مثلا فایرفاکس وقتی یک صفحه را باز میکنه caption به شکل زیر تغییر میکنه
Google - Mozilla Firefox
با تابعی که من براتون گذاشتم فقط کافیه یک قسمت از اسم پنجره را بدید مثلا فقط
fire
و بعد هندل اون پنجره را بگیرید
کد:
Private Sub Command1_Click()
MsgBox FindWindowLike("fire")

End Sub
۱۶-بهمن-۱۳۹۰, ۲۱:۵۸:۵۴
ارسال‌ها
پاسخ
تشکر شده توسط : crafcrab, mahdi321
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #10
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
البته یه کار دیگه هم میتونی بکنی

پیاده سازیش با خودت
با استفاده از enumWindows لیست کلیه پنجره های باز سیستم رو در باید بعد با با استفاده از openprocess و Getmodulefilename میتونی ادرس فایل exe شو بگیری و چک کنی این فورم مال چه برنامه ای یا پروسه ای هست

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۷-بهمن-۱۳۹۰, ۱۴:۲۲:۱۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
crafcrab آفلاین
كاربر دو ستاره
**

ارسال‌ها: 216
موضوع‌ها: 79
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 42
( 33 تشکر در 31 ارسال )
ارسال: #11
RE: پیدا کردن هندل یک شی که caption آن را نمیدانیم
(۱۷-بهمن-۱۳۹۰, ۱۴:۲۲:۱۷)lord_viper نوشته است: البته یه کار دیگه هم میتونی بکنی

پیاده سازیش با خودت
با استفاده از enumWindows لیست کلیه پنجره های باز سیستم رو در باید بعد با با استفاده از openprocess و Getmodulefilename میتونی ادرس فایل exe شو بگیری و چک کنی این فورم مال چه برنامه ای یا پروسه ای هست

آره میشه ولی فکر کنم cpu رو زیاد درگیر کنه هی دونه دونه ....
۱۷-بهمن-۱۳۹۰, ۱۸:۵۷:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کار با هندل policweb 12 9,341 ۲۴-شهریور-۱۳۹۲, ۰۹:۴۲:۲۳
آخرین ارسال: lord_viper
  [سوال] پیدا کردن تمامی هندلها policweb 2 3,285 ۲۰-شهریور-۱۳۹۲, ۲۲:۰۳:۰۱
آخرین ارسال: Ghoghnus
  سوالاتی درباره ی هندل javaweb 7 7,499 ۱۸-خرداد-۱۳۹۲, ۱۴:۲۱:۲۸
آخرین ارسال: Di Di
  پیدا کرددن کامپوننت megatron 6 5,177 ۰۸-اردیبهشت-۱۳۹۲, ۲۳:۱۲:۲۹
آخرین ارسال: megatron
  [سوال] یک سوال ساده در مورد هندل thinkdiff 1 2,838 ۱۴-فروردین-۱۳۹۲, ۱۳:۱۶:۲۸
آخرین ارسال: Di Di
  [سوال] اجرا نشدن دستورات هندل کردن خطا در محیط IDE وی بی flush 6 6,016 ۰۵-اسفند-۱۳۹۱, ۲۱:۴۹:۳۵
آخرین ارسال: Payman62
  پیدا کردن فایل ها با پسوند خاص و کپی آن ها در یک فولدر ppcsoft 5 8,156 ۰۹-بهمن-۱۳۹۱, ۱۹:۳۷:۲۶
آخرین ارسال: fararaz
  پیدا کردن یک فایل در کامپیوتر با ویژوال بیسیک silent718 11 11,632 ۱۱-مهر-۱۳۹۱, ۰۸:۱۰:۵۲
آخرین ارسال: loack
Exclamation [سوال] هندل اشیاء از کلاس Qwidget javadi_31456 2 2,705 ۲۸-مرداد-۱۳۹۱, ۱۸:۴۳:۳۸
آخرین ارسال: sobhan93
  پیدا کردن کاربران ویندوز s7004u 5 6,337 ۰۳-تير-۱۳۹۱, ۲۲:۴۷:۵۲
آخرین ارسال: s7004u

پرش به انجمن:


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

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