Ответы на все вопросы

FAQ / Программирование / Visual Basic

Как работать с FindWindow, EnumWindow.

Вопрос:

Поясните как работать с функцией API:
FindWindow, EnumWindow.
Мне нужно найти идентификатор окна.

Ответ:

Функция может искать хендл окна либо по заголовку, либо по имени класса, в зависимости от того, что известно. Ну и, естественно, хендл надо получить:

Dim lMyHandle As Long
lMyHandle = FindWindow(vbNullString, "Калькулятор")
     ' если знаем заголовок
lMyHandle = FindWindow("ExploreWClass", vbNullString)
     ' найдешь окно Проводника

А EnumWindows используется для того, чтобы перебрать все окна, существующие в данный момент.

Private Sub Form_Load()
     Me.AutoRedraw = True
     'call the Enumwindows-function
     EnumWindows AddressOf EnumWindowsProc, ByVal 0&
End Sub

'Это помещаешь в модуль
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal
lParam As Long) As Boolean
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal
hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As
Boolean
     Dim sSave As String, Ret As Long
     Ret = GetWindowTextLength(hwnd)
     sSave = Space(Ret)
     GetWindowText hwnd, sSave, Ret + 1
     Form1.Print Str$(hwnd) + " " + sSave
     EnumWindowsProc = True ' продолжение перебора
End Function

    Дмитрий Данелия

Версия для печати Найти похожие статьи
Поиск по сайту

Архив

ВсПнВтСрЧтПтСб
1234567
891011121314
15161718192021
22232425262728
293012345
6789101112
13141516171819
20212223242526
272829303112



Мы рекомендуем