Это должно быть легко, но не так, как я себе представлял ... Это окно «Мастер слияния печати» Corel DRAW.Я могу найти окно со Spy ++, его заголовком и его классом. Я не могу найти его дескриптор, используя API .Используя FindWindow, я могу получить только основное окно Corel:
TxtHwnd = FindWindow("CorelDRAW18", vbNullString)
Когда я пытаюсь сделать то же самое, используя заголовок и класс, он не может вернуть дескриптор:
hMerge = FindWindow("#32770 (Dialog)", "Print Merge Wizard")
Iпопытался использовать FindWindowEx следующим способом, но безуспешно:
TxtHwnd = FindWindow("CorelDRAW18", vbNullString): Debug.Print TxtHwnd
hMerge = FindWindowEx(TxtHwnd, ByVal CLngPtr(0), "#32770 (Dialog)", "Print Merge Wizard")
Я также попытался перебрать все открытые окна, используя:
Sub ListWins(Optional Title = "*XYZ*", Optional Class = "*")
Dim hWndThis As Long
hWndThis = FindWindow(vbNullString, vbNullString)
While hWndThis
Dim sTitle As String, sClass As String
sTitle = Space$(255)
sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle)))
sClass = Space$(255)
sClass = Left$(sClass, GetClassName(hWndThis, sClass, Len(sClass)))
If sTitle Like Title And sClass Like Class Then
Debug.Print sTitle, sClass
Stop
End If
hWndThis = GetWindow(hWndThis, GW_HWNDNEXT)
Debug.Print sTitle, sClass, hWndThis
Wend
End Sub
Вызов функции следующим образом:
ListWins "Print Merge Wizard", "#32770 (Dialog)"
Обсуждаемое окно находится не между теми, что показаны в коде ... Изучая свойства окна Spy ++, я вижу, что Мастер печати слияния не является дочерним окном Corel.Он просто показывает, что Corel - его владелец ...
Зная все это, каким образом вы думаете, я могу поймать обработчик окна Print Merge Wizard ?
Спасибозаранее!