Почему некоторые окна не перечисляются? - PullRequest
0 голосов
/ 16 ноября 2018

Я проводил некоторые тесты на взаимосвязи окон и обнаружил, что есть некоторые окна, которые недоступны через функции 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!

Разделитель полей по умолчанию - !,но может быть изменено в верхней части исходного файла.Интересно, для чего все эти скрытые комбо-боксы отключены от рабочего стола?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...