Why are some windows not enumerable?












0















I was doing some tests on Window relationships, and found out that there are some windows that aren't accessible via the EnumWindows() and EnumChildWindows() functions.



Some I found by going up to the root of the relationship tree to the root node (nullptr) via GetParent() and another I found by peeking into the messages that were being sent around. Is there no way to find these handles? If so, how? If not, is it done this way for security purposes, or is something broken?



Edit



I've added a repo of the code (including the VS solution I did) here, in case anyone is interested in taking a look. When I run it unmodified, it gives me a single not enumable HWND with the class name Message. Why that isn't included in the message windows, I don't know. Changing the line allocate_nodes(false) to allocate_nodes(true) in the main() function, will force looking for other HWNDs that weren't found using the published interfaces. I'm not sure if these are real or phantoms, though it does capture the not enumable HWND.



Some sample output:




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!


The default field separator is !, but can be changed at the top of the source file. I wonder what all of these hidden ComboBoxes are for that are off of the Desktop?










share|improve this question




















  • 3





    The standard example is a message-only window. Use the Spy++ utility to find out more about it.

    – Hans Passant
    Nov 15 '18 at 22:08













  • That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

    – Adrian
    Nov 15 '18 at 22:28











  • also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

    – RbMm
    Nov 15 '18 at 22:33











  • It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

    – Hans Passant
    Nov 15 '18 at 22:35











  • Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

    – Adrian
    Nov 15 '18 at 22:40


















0















I was doing some tests on Window relationships, and found out that there are some windows that aren't accessible via the EnumWindows() and EnumChildWindows() functions.



Some I found by going up to the root of the relationship tree to the root node (nullptr) via GetParent() and another I found by peeking into the messages that were being sent around. Is there no way to find these handles? If so, how? If not, is it done this way for security purposes, or is something broken?



Edit



I've added a repo of the code (including the VS solution I did) here, in case anyone is interested in taking a look. When I run it unmodified, it gives me a single not enumable HWND with the class name Message. Why that isn't included in the message windows, I don't know. Changing the line allocate_nodes(false) to allocate_nodes(true) in the main() function, will force looking for other HWNDs that weren't found using the published interfaces. I'm not sure if these are real or phantoms, though it does capture the not enumable HWND.



Some sample output:




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!


The default field separator is !, but can be changed at the top of the source file. I wonder what all of these hidden ComboBoxes are for that are off of the Desktop?










share|improve this question




















  • 3





    The standard example is a message-only window. Use the Spy++ utility to find out more about it.

    – Hans Passant
    Nov 15 '18 at 22:08













  • That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

    – Adrian
    Nov 15 '18 at 22:28











  • also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

    – RbMm
    Nov 15 '18 at 22:33











  • It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

    – Hans Passant
    Nov 15 '18 at 22:35











  • Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

    – Adrian
    Nov 15 '18 at 22:40
















0












0








0








I was doing some tests on Window relationships, and found out that there are some windows that aren't accessible via the EnumWindows() and EnumChildWindows() functions.



Some I found by going up to the root of the relationship tree to the root node (nullptr) via GetParent() and another I found by peeking into the messages that were being sent around. Is there no way to find these handles? If so, how? If not, is it done this way for security purposes, or is something broken?



Edit



I've added a repo of the code (including the VS solution I did) here, in case anyone is interested in taking a look. When I run it unmodified, it gives me a single not enumable HWND with the class name Message. Why that isn't included in the message windows, I don't know. Changing the line allocate_nodes(false) to allocate_nodes(true) in the main() function, will force looking for other HWNDs that weren't found using the published interfaces. I'm not sure if these are real or phantoms, though it does capture the not enumable HWND.



Some sample output:




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!


The default field separator is !, but can be changed at the top of the source file. I wonder what all of these hidden ComboBoxes are for that are off of the Desktop?










share|improve this question
















I was doing some tests on Window relationships, and found out that there are some windows that aren't accessible via the EnumWindows() and EnumChildWindows() functions.



Some I found by going up to the root of the relationship tree to the root node (nullptr) via GetParent() and another I found by peeking into the messages that were being sent around. Is there no way to find these handles? If so, how? If not, is it done this way for security purposes, or is something broken?



Edit



I've added a repo of the code (including the VS solution I did) here, in case anyone is interested in taking a look. When I run it unmodified, it gives me a single not enumable HWND with the class name Message. Why that isn't included in the message windows, I don't know. Changing the line allocate_nodes(false) to allocate_nodes(true) in the main() function, will force looking for other HWNDs that weren't found using the published interfaces. I'm not sure if these are real or phantoms, though it does capture the not enumable HWND.



Some sample output:




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!


The default field separator is !, but can be changed at the top of the source file. I wonder what all of these hidden ComboBoxes are for that are off of the Desktop?







winapi






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 7:12







Adrian

















asked Nov 15 '18 at 22:02









AdrianAdrian

3,97822162




3,97822162








  • 3





    The standard example is a message-only window. Use the Spy++ utility to find out more about it.

    – Hans Passant
    Nov 15 '18 at 22:08













  • That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

    – Adrian
    Nov 15 '18 at 22:28











  • also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

    – RbMm
    Nov 15 '18 at 22:33











  • It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

    – Hans Passant
    Nov 15 '18 at 22:35











  • Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

    – Adrian
    Nov 15 '18 at 22:40
















  • 3





    The standard example is a message-only window. Use the Spy++ utility to find out more about it.

    – Hans Passant
    Nov 15 '18 at 22:08













  • That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

    – Adrian
    Nov 15 '18 at 22:28











  • also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

    – RbMm
    Nov 15 '18 at 22:33











  • It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

    – Hans Passant
    Nov 15 '18 at 22:35











  • Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

    – Adrian
    Nov 15 '18 at 22:40










3




3





The standard example is a message-only window. Use the Spy++ utility to find out more about it.

– Hans Passant
Nov 15 '18 at 22:08







The standard example is a message-only window. Use the Spy++ utility to find out more about it.

– Hans Passant
Nov 15 '18 at 22:08















That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

– Adrian
Nov 15 '18 at 22:28





That's what I was looking for @HansPassant. However, is the source code for Spy++ available?

– Adrian
Nov 15 '18 at 22:28













also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

– RbMm
Nov 15 '18 at 22:33





also you need have disableWindowFiltering in manifest - TRUE disables window filtering so you can enumerate immersive windows from the desktop.

– RbMm
Nov 15 '18 at 22:33













It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

– Hans Passant
Nov 15 '18 at 22:35





It used to be, part of the SDK samples. Takes a museum trip though, back to around 1998. Just use it.

– Hans Passant
Nov 15 '18 at 22:35













Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

– Adrian
Nov 15 '18 at 22:40







Lol. Well, the tip on the message-only windows found 99.9% of the windows. There was just one (that I'm aware of) that wasn't enumerated. Not sure about how to generate a manifest file though @RbMm.

– Adrian
Nov 15 '18 at 22:40














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328519%2fwhy-are-some-windows-not-enumerable%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328519%2fwhy-are-some-windows-not-enumerable%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python