PDA

View Full Version : سوال: جست و جو در Caption پنجره های باز



___mehdi.rato___
جمعه 03 اردیبهشت 1395, 12:46 عصر
سلام
کد زیر میاد هندل پنجره ای که Caption آن "Task Manager" هست رو پیدا می کنه.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim Temp As Long

Private Sub Timer1_Timer()
Temp = FindWindow(vbNullString, "Task Manager")
End Sub

من می خوام هندل پنجره ای رو پیدا کنم که در Caption آن مثلاً "Task" یا "Manager" پیدا شود.

یعنی اگر Caption پنجره ای "Task Manager" بود، پنجره ای که در Caption آن "Task" (و یا "Manager") هست، هندل آن در متغیر Temp ریخته شود.

لطفا راهنمایی کنید. گشتم چیزی پیدا نکردم.

vbhamed
شنبه 04 اردیبهشت 1395, 05:31 صبح
سلام
برای این کار باید از Api ویندوز استفاده کنید
به دنبال تابع EnumWindows و مثالهای اون در VB6 در گوگل جستجو کنید

___mehdi.rato___
شنبه 04 اردیبهشت 1395, 06:11 صبح
این سورس رو پیدا کردم، میذارم هرکی خواست استفاده کنه.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Const GW_HWNDNEXT = 2

Private Function GetHandleFromPartialCaption(ByRef lWnd As Long, ByVal sCaption As String) As Boolean
Dim lhWndP As Long
Dim sStr As String
GetHandleFromPartialCaption = False
lhWndP = FindWindow(vbNullString, vbNullString)
Do While lhWndP <> 0
sStr = String(GetWindowTextLength(lhWndP) + 1, Chr$(0))
GetWindowText lhWndP, sStr, Len(sStr)
sStr = Left$(sStr, Len(sStr) - 1)
If InStr(1, sStr, sCaption) > 0 Then
GetHandleFromPartialCaption = True
lWnd = lhWndP
Exit Do
End If
lhWndP = GetWindow(lhWndP, GW_HWNDNEXT)
Loop
End Function