Why are some windows not enumerable?
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
|
show 4 more comments
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
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
|
show 4 more comments
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
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
winapi
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
|
show 4 more comments
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
|
show 4 more comments
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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