Я проводил некоторые тесты на взаимосвязи окон и обнаружил, что есть некоторые окна, которые недоступны через функции EnumWindows()
и EnumChildWindows()
.
Некоторые из них я нашел, поднявшись докорень дерева отношений с корневым узлом (nullptr) через GetParent()
и другой, который я нашел, заглянув в сообщения, которые были отправлены.Нет ли способа найти эти ручки?Если да, то как?Если нет, то это сделано в целях безопасности или что-то не работает?
Редактировать
Я добавил репозиторий кода (включая решение VS, которое я сделал) здесь , на случай, если кто-нибудь захочет посмотреть.Когда я запускаю его без изменений, он дает мне один not enumable
HWND с именем класса Message
.Почему это не включено в окна сообщений, я не знаю.Изменение строки allocate_nodes(false)
на allocate_nodes(true)
в функции main()
заставит искать другие HWND, которые не были найдены с помощью опубликованных интерфейсов.Я не уверен, являются ли они действительными или фантомными, хотя он захватывает not enumable
HWND.
Пример некоторых выходных данных:
handle #!window_status!got expected!visible!tree!class name!window title
1! special!correct!0!"00000000"!!
2! special!correct!1!" 00010010"!#32769!
3! top level!correct!0!" 00010290"!ComboLBox!
4! top level!correct!0!" 000102FE"!ComboLBox!
5! top level!correct!0!" 000404A0"!ComboLBox!
6! top level!correct!0!" 000404A4"!ComboLBox!
7! top level!correct!0!" 00040822"!ComboLBox!
8! top level!correct!0!" 00071DF8"!ComboLBox!
9! top level!correct!0!" 000A0FF6"!ComboLBox!
10! top level!correct!0!" 001A1CD0"!ComboLBox!
11! top level!correct!0!" 001C1626"!ComboLBox!
12! top level!correct!0!" 001E1C30"!ComboLBox!
13! top level!correct!0!" 001F17FC"!ComboLBox!
14! top level!correct!0!" 002B19E8"!ComboLBox!
15! top level!correct!0!" 003517D2"!ComboLBox!
16! top level!correct!0!" 00351906"!ComboLBox!
17! top level!correct!0!" 00351AE4"!ComboLBox!
18! top level!correct!0!" 003714D2"!ComboLBox!
19! top level!correct!0!" 003916E2"!ComboLBox!
20! top level!correct!0!" 00421248"!ComboLBox!
21! top level!correct!0!" 005B0472"!ComboLBox!
22! top level!correct!0!" 006517CA"!ComboLBox!
23! top level!correct!0!" 00680E16"!ComboLBox!
24! top level!correct!0!" 006F11D0"!ComboLBox!
25! top level!correct!0!" 00751B08"!ComboLBox!
26! top level!correct!0!" 007A165E"!ComboLBox!
27! top level!correct!0!" 00840C0E"!ComboLBox!
28! top level!correct!0!" 009816AC"!ComboLBox!
29! top level!correct!0!" 009E0EE2"!ComboLBox!
30! top level!correct!0!" 00A01AAC"!ComboLBox!
31! top level!correct!0!" 00B1134A"!ComboLBox!
32! top level!correct!0!" 00BA10F8"!ComboLBox!
33! top level!correct!0!" 00C00994"!ComboLBox!
34! top level!correct!0!" 00E014C0"!ComboLBox!
35! top level!correct!0!" 00EA0452"!ComboLBox!
36! top level!correct!0!" 00F911E2"!ComboLBox!
37! top level!correct!0!" 014913EC"!ComboLBox!
38! top level!correct!0!" 015804D0"!ComboLBox!
39! top level!correct!0!" 018E0FF0"!ComboLBox!
40! top level!correct!0!" 01D60FA4"!ComboLBox!
41! top level!correct!0!" 021E087C"!ComboLBox!
42! not enumable!correct!0!" 00010012"!Message!
43! message!correct!0!" 0015184E"!ScriptedMessageWindow!
44! message!correct!0!" 005C0C54"!AccessibleNotificationsWindow!
45! message!correct!0!" 00A6043A"!ScriptedMessageWindow!
46! message!correct!0!" 00E80DEE"!ScriptedMessageWindow!
47! message!correct!0!" 00010014"!#32774!
48! top level!correct!0!" 00010048"!Dwm!DWM Notification Window
49! message!correct!0!" 00010086"!#43!MCI command handling window
50! message!correct!0!" 0001008A"!OleMainThreadWndClass!OleMainThreadWndName
51! top level!correct!0!" 0001008C"!DDEMLMom!
52! top level!correct!0!" 00010090"!DDEMLEvent!
53! message!correct!0!" 00010094"!OleMainThreadWndClass!OleMainThreadWndName
54! message!correct!0!" 00010098"!WorkerW!AppResolver_NotifyWnd
55! message!correct!0!" 000100A8"!OleMainThreadWndClass!OleMainThreadWndName
56! message!correct!0!" 000100B0"!CicMarshalWndClass!CicMarshalWnd
57! message!correct!0!" 000100B2"!UserAdapterWindowClass!
58! message!correct!0!" 000100BC"!OleMainThreadWndClass!OleMainThreadWndName
59! message!correct!0!" 000100C0"!CicMarshalWndClass!CicMarshalWnd
60! top level!correct!0!" 000100CC"!PushNotificationsPowerManagement!Windows Push Notifications Platform
61! top level!correct!0!" 000100CE"!IME!Default IME
62! message!correct!0!" 000100D6"!UserAdapterWindowClass!
63! message!correct!0!" 000100DC"!UserAdapterWindowClass!
64! top level!correct!0!" 000100E2"!GDI+ Hook Window Class!G
65! top level!correct!0!" 000100E4"!IME!Default IME
66! top level!correct!0!" 000100E8"!#32770!The Event Manager Dashboard
67! top level!correct!0!" 000100EA"!IME!Default IME
68! top level!correct!0!" 00010102"!MSCTFIME UI!MSCTFIME UI
69! not top level!correct!0!" 000100F0"!Button!OK
70! not top level!correct!0!" 000100F2"!Static!Activity Information
71! not top level!correct!0!" 000100F4"!Button!Cancel
72! not top level!correct!0!" 000100F6"!ListBox!
Разделитель полей по умолчанию - !
,но может быть изменено в верхней части исходного файла.Интересно, для чего все эти скрытые комбо-боксы отключены от рабочего стола?