Как Spy ++ создает свой список процессов? - PullRequest
3 голосов
/ 18 ноября 2011

TL; DR - Как инструмент Spy ++ действительно создает свой список процессов?

Этап

У нас есть настольное приложение MFC (работающее на Windows XP), котороезависает в том, что он больше не реагирует ни на какой пользовательский ввод.Однако перерисовывается при переключении на него через alt-tab.(Он получает WM_SETFOCUS, WM_ACTIVATE и т. Д. Он, по-видимому, не получает сообщений мыши или клавиатуры.)

Поскольку приложение зависло в некотором подвешенном состоянии, мы извлекли несколько дампов процесса, но онипока мало помогали.Введите:

Spy ++

Мы использовали Spy ++, чтобы найти информацию, которую я дал выше о сообщениях окна, которые это приложение кажется обрабатывает.Мы сделали это, открыв Windows View Windows View и выбрав окно нашего приложения и в свойствах сообщений выбрав Windows of same process и Messages to View: Select All.

Однако мы сначала попытались просмотреть все сообщения этого процесса, открыв Просмотр процессов Processes View из Spy ++ и , наше приложение не отображается в этом списке процессов .Перекрестная проверка на другом ПК, на котором приложение работает нормально, этот процесс также обычно отображается в списке процессов Spy ++.

Может ли что-либо говорить о некорректно работающем приложении из-за того, что процесс не работаетотображается в представлении процессов Spy ++ , но главное окно приложения отображается в представлении Windows. Почему процесс с видимым главным окном не будет отображаться в представлении процессов Spy ++?

Процесс указан в диспетчере задач и в окне присоединения процесса Visual Studio 2005. Итакэти инструменты, очевидно, используют другой метод для перечисления процессов, чем Spy ++ ...?

Система, в которой приложение в настоящее время висит, - это система Windows XP SP2, и мы использовали служебную программу Spy ++, которая поставляется с Visual Studio 2005.

Поведение иногда повторяется, но только после нескольких дней работы приложения!

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Запуск Vista или новее?Ваш процесс, вероятно, повышен, а Spy ++ нет.Более новые версии Spy ++ требуют повышения прав.Итак, попробуйте явно повысить Spy ++ и посмотрите, поможет ли это.

0 голосов
/ 18 ноября 2011

Да, конечно, из этого можно сделать выводы.Не принимайте ничего, что я говорю, слишком серьезно в этом контексте, я должен был бы взглянуть на код.Но я верю, что Spy уходит и смотрит на API EnumProcesses.(http://msdn.microsoft.com/en-us/library/ms682629.aspx)

Итак, если ваш процесс там не отображается ... хм.

Но что может отличаться между системой, где она работает, и системой, где она не работает?

...