Some GDI windows are not seen
Brought to you by:
xtal256
Can't find PMM's initial window.
See: https://github.com/AlexanderBagel/ProcessMemoryMap/issues/8
When PMM is first launched it has the "select window" dialog.
WD 3.5.1
PMM 1.1.15 up to the now latest v1.3.20-beta
Have you tried refreshing the Window Detective tree (Green button in the toolbar, or menu View > Refresh)?
Whilst Window Detective can track the creation and destruction of windows and automatically update the tree, it does not always see new windows.
If you started up Window Detective after PMM and still can't see it's window, then I'm afraid I cannot offer any help. WD just uses the EnumChildWindows function to get all child windows of the desktop.
I don't know if it's possible for PMM to show a window but have it not be enumerated by that function.
It's possible that it is not a child window of the desktop, but I don't know how that would work.
Refreshing did not help then.
I suspect there was something amiss between GDI and DWM.
There seems to be a taskbar button and/or Glass/Aero frame with stale
background and that's it.
Other times i managed to find 0x0 window created for taskbar button, and to
force it visible, but not that time.
Frankly, i saw a number of times WD just crashing, trying to interact with
problematic windows.
Being C++ app it seems to lack app-global handler for uncaught exceptions
and just dies...
So i try to be cautious.
In particular, when i have some Delphi apps being debugged and their
threads paused - running/refreshing WD or Spy++ becomes a total no-no.
And it took some time and nerves to figure this conditional.
That said, since it seems even MS almighty seemingly did not find better
ways to enumerate windows of an app under debugger, there is probably
little WD can do.
Still, it means would WD crash there is no options to restart it during
debug session.
That at said, even with normal, not-debugged but leaky as jell legacy app,
WD is not very stable.
I discover "hanging" detached combobox lists, for example, but when i try
to make WD set properties for them - it often crashes.
WD is good swissknife when it works. Sadly it is far from being bulletproof
and when using it the primary concerns soon becomes to use as little
features as possible and try to avoid triggering WD insecurities. So when i
see some potentislly problematic ghost window i have less incentive to kick
it into the open and inspect, than to keep WD alive by avoiding touching
it.
вт, 27 дек. 2022 г., 05:25 xtal256 xtal256@users.sourceforge.net:
Related
Bugs: #15
You can just try to download that specific build of pmm and try.
PMM's dev was changing their windows handling in later builds, u think.
I did it on Windows 7, not sure if it is OS-related or not. Just posted it
as a perfectly reproducible and publicly available example of a behavior i
often saw otherwise in house.
As for auto-detection, yes, it tries, but for example it does not detect
when the process goes out and still shows it and few windows it did not
explicitly destroy.
Also, this auto-detection is often a misfeature, as View Properties Windows
are getting disabled.
Nominally they are there still, but you can not use them. Neither copy, nor
save, no switch to another tab, nor even scroll...
Had it been an "active" window like Edit Properties, then prohibiting
"active" acyions like OK/Apply would make sense, but disabling the whole
View window... Brutal. That is offtopic for this ticket though.
Ah that might be it. When an app "hangs" in Windows, I often see it's window being replaced with a window owned by DWM. That's when the window goes translucent white.
By the way, I apologise for any crashes in WD. I did work on improving it's stability while it was in active development, but I haven't touched it in over a decade. At this stage I'm just glad some people are still getting use out of it!
yeah, i noticed.
but it is all about "scratch your itch", so i have no standing to complain
with all its flaws this is still a very handful swissknife
BTW, i traced this specific problem to our own code and its
interaction with Delphi VCL library. Should be similar with LCL or any
other library of a similar design.
Not sure if you're bothered with those minitiuaes.