| Найти полный заголовок окна по известной части |
|
Для поиска окон используйте код: KeyWords = Split("Интернет, The Bat", ",") Call fEnumWindows If UBound(FindResults) > 0 Then 'Если поиск дал результаты ... 'Каждый элемент массива - заголовок окна End If 'КОД ФОРМЫ Private Declare Function apiGetClassName Lib "user32" Alias "GetClassNameA" (ByVal Hwnd As Long, ByVal lpClassname As String, ByVal nMaxCount As Long) As Long Private Declare Function apiGetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long Private Declare Function apiGetWindow Lib "user32" Alias "GetWindow" (ByVal Hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function apiGetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function apiGetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal aint As Long) As Long Private Const mcGWCHILD = 5 Private Const mcGWHWNDNEXT = 2 Private Const mcGWLSTYLE = (-16) Private Const mcWSVISIBLE = &H10000000 Private Const mconMAXLEN = 255 Private KeyWords$(), FindResults$() Function fEnumWindows() Dim lngx As Long, lngLen As Long, i As Long Dim lngStyle As Long, strCaption As String ReDim FindResults(0) lngx = apiGetDesktopWindow() 'Return the first child to Desktop lngx = apiGetWindow(lngx, mcGWCHILD) Do While Not lngx = 0 strCaption = fGetCaption(lngx) If Len(strCaption) > 0 Then lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE) 'enum visible windows only If lngStyle And mcWSVISIBLE Then If UBound(KeyWords) > -1 Then For i = 0 To UBound(KeyWords) If InStr(1, UCase(strCaption), UCase(KeyWords(i))) <> 0 Then b = UBound(FindResults) + 1 ReDim Preserve FindResults(b) FindResults(b) = strCaption Exit For End If Next End If End If End If lngx = apiGetWindow(lngx, mcGWHWNDNEXT) Loop End Function Private Function fGetClassName(Hwnd As Long) Dim strBuffer As String Dim intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = apiGetClassName(Hwnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetClassName = Left$(strBuffer, intCount) End If End Function Private Function fGetCaption(Hwnd As Long) Dim strBuffer As String Dim intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetCaption = Left$(strBuffer, intCount) End If End Function Использовались материалы http://www.vbnet.ru. |