How does Spy++ construct its process list?

試著忘記壹切 提交于 2019-12-06 07:14:04

问题


TL;DR - How does the Spy++ tool really construct its process list?

Stage

We have an MFC desktop application (running on Windows XP) that is hanging in that it doesn't react to any user input anymore. It is redrawn when switching to it via alt-tab however. (It does receive WM_SETFOCUS, WM_ACTIVATE, etc. It apparently does not receive any mouse or keyboard messages.)

Since the app is hanging in some limbo, we pulled a few process dumps, but these were of little help so far. Enter:

Spy++

We used Spy++ to find the information I gave above about the window messages this application seems to be processing. We did this by Opening the Windows View

and selecting our application Window and in the Messages properties selected Windows of same process and Messages to View : Select All.

However we first tried to view all messages of this process by opening the Processes View

of Spy++ and our application is not shown in this process list. Cross checking on another PC where the app is running normally, the process is also normally shown in the processes list of Spy++.

Can anything about the misbehaving app be inferred from the fact that the process is not shown in Spy++'s Process View, but the main window of the app is shown in the Windows View. Why would a process with a main window that is visible not be shown in Spy++'s Processes View?

The process is listed in Task Manager and in the Attach Process Window of Visual Studio 2005. So these tools apparently use a different method to list processes than Spy++ ... ?

The system where the app is currently hanging is a Windows XP SP2 system and we've used the Spy++ Utility that comes with Visual Studio 2005.

The behavior does recur occasionally, but only after the App has been running for several days!


回答1:


Running Vista or later? Your process is probably elevated and Spy++ is not. Newer versions of Spy++ require elevation. So, try elevating Spy++ explicitly and see if that helps.




回答2:


Yes, of course things can be inferred from this. Don't take anything I say too seriously in this context, I'd have to go look at the code. But I believe that Spy goes off and looks at the EnumProcesses API. (http://msdn.microsoft.com/en-us/library/ms682629.aspx)

So, if your process isn't showing up there... hrm.

But, what is different between the system where it's working and the one where it's not?



来源:https://stackoverflow.com/questions/8180527/how-does-spy-construct-its-process-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!