WPF: Как определить происхождение фантомного окна? - PullRequest
1 голос
/ 13 июля 2011

Я недавно обновил стороннюю библиотеку, которую использовало мое приложение. После этого, запуск приложения приводит к созданию «фантомного» окна. Я могу видеть пустое окно в верхнем левом углу экрана на мгновение, а затем оно становится невидимым. Это фантомное окно видно на панели задач. Выбор этого фантомного окна на панели задач отключает окно моего приложения.

Когда окно моего приложения активно, определенные события (например, события колеса прокрутки) приводят к активизации фантомного окна, не позволяя окну моего приложения получать события.

Если я закрываю фантомное окно с помощью панели задач, мое приложение ведет себя как обычно.

Я предполагаю, что это либо регрессия в рассматриваемой сторонней библиотеке, либо взаимодействие между моим кодом и кодом сторонней библиотеки.

Как я могу определить, где в кодовой базе создается и / или показывается это окно? В противном случае это способ, которым я могу перебрать все экземпляры окон в приложении WPF, чтобы я мог получить больше информации об окне (тип и т. Д.).

Это странная проблема, поэтому ни один ответ не будет считаться слишком странным!

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Как и другие, вероятно, отметят, Snoop и WPF Inspector могут быть хорошими местами для начала. Они позволяют вам отслеживать работающее приложение WPF и просматривать его визуальное дерево, так как элементы пользовательского интерфейса в целевом приложении будут выделены красной рамкой для легкой идентификации.

Это может дать вам подробную информацию о фантомном окне, но не сообщит вам почему появляется окно.

2 голосов
/ 13 июля 2011

Используйте приложение Питера Блуа ' Snoop , чтобы получить подробную информацию об окне.

1 голос
/ 17 ноября 2011

Это, как оказалось, было вызвано встраиванием элемента управления браузера, который загружал плагин Google Chrome flash.По какой-то причине это взаимодействие вызвало появление фантомного окна.Использование стандартного (Adobe) плагина Flash не приводило к появлению этого окна.

...