Страница: 1 |
Страница: 1 |
Вопрос: "Капризный" диалог
Добавлено: 14.11.07 13:56
Автор вопроса: Сергей
Имеется главное окно, хендл которого я получаю через FindWindow, а вот хендлы кнопок и чекбоксов которые в нем расположены я почему-то никак не могу получить. Через WindowFromPoint я посмотрел их хендлы и CtrlID, они почему-то одинаковы. Вопрос - как еще я могу узнать хендлы элементов ?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 14.11.07 14:06
EnumChildWindow
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 14.11.07 14:45
или GetWindow со вторым параметром GW_CHILD, а потом в цикле с GW_HWNDNEXT, пока ноль не вернет.
Номер ответа: 3
Автор ответа:
Сергей
Вопросов: 9
Ответов: 18
Профиль | | #3
Добавлено: 14.11.07 15:47
Спасибо, с EnumChildWindow вроде разобрался, а как организовать цикл с GetWindow не покажете на примере ?
Номер ответа: 4
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #4
Добавлено: 15.11.07 08:57
Const SWP_SHOWWINDOW = &H40
Const GW_CHILD = 5
Const GW_HWNDNEXT = 2
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Dim tWnd As Long, bWnd As Long, sSave As String * 250
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'This code will hide the Start-button
'Find the taskbar's handle
tWnd = FindWindow("Shell_traywnd", vbNullString)
'Search for a child window
bWnd = GetWindow(tWnd, GW_CHILD)
Do
'get the child window's classname
GetClassName bWnd, sSave, 250
'We have the handle of the Start button If the classname is 'button'
If LCase(Left$(sSave, 6)) = "button" Then Exit Do
'Search the next child
bWnd = GetWindow(bWnd, GW_HWNDNEXT)
Loop
'Hide the start button
SetWindowPos bWnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Show the start button
SetWindowPos bWnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW
End Sub