我正在对Window关系进行一些测试,发现有些窗口无法通过EnumWindows()
和EnumChildWindows()
函数进行访问。
我发现一些通过GetParent()
到达关系树的根节点到根节点(nullptr),而另一个发现是通过窥视正在发送的消息。有没有办法找到这些手柄?如果是这样,怎么办?如果不是,是出于安全目的这样做吗?还是有问题?
我已经添加了一个代码仓库(包括我做过的VS解决方案)here,以防有人感兴趣。当我未经修改地运行它时,它会给我一个not enumable
类名称为Message
的HWND。我不知道为什么消息窗口中未包含该信息。在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!
默认字段分隔符为!
,但可以在源文件的顶部进行更改。我想知道所有这些隐藏的ComboBox都在桌面之外吗?