VBCoding Библиотека кодов Visual Basic 6 Формы и окна Найти полный заголовок окна по известной части

Visual Basic 6
Найти полный заголовок окна по известной части
Для поиска окон используйте код:
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.
 

Добавить комментарий


Защитный код
Обновить

 
VBCoding Библиотека кодов Visual Basic 6 Формы и окна Найти полный заголовок окна по известной части  
Powered by Exponenta -