Как распознать окно Microsoft Edge, отличное от окна Skype? - PullRequest
0 голосов
/ 02 октября 2019

Я получаю список окон с Win32.EnumWindows, а затем фильтрую их, чтобы сохранить те, которые я хочу. Я хочу сохранить нормальное, видимое окно Skype и пропустить скрытое окно Microsoft Edge. (Я использую Chrome, и в моем выводе Alt-TAB или на экране не отображаются доступные экземпляры Edge.)

Я уже отфильтровал несколько окон Edge класса Windows.UI.Core.CoreWindow, но есть одноКраевое окно все еще в списке. Может быть, это главное или родительское окно или что-то? Может быть, окно диспетчера задач или окна «Настройки», которые я открываю, находятся под Edge под капотом?

Я сбросил свойства окон Skype и Edge, и они одинаковы для элементов, на которые я смотрел. (Я признаю, что установка WS_VISIBLE не означает, что я вижу окно.) Вот элементы, которые идентичны для обоих окон.

Skype window: (Identical to the output for the Edge window that I can't see.)
  Is visible.
  Has no owner.
  Has no parent.
  Is not APPWIN.
  Is not a toolwindow.
  Is not a cloaked store window.
  Class is ApplicationFrameWindow

Может ли кто-нибудь дать мне ответ о том, как определитьГраничное окно (кроме использования его имени в качестве особого случая в коде) в отличие от окна Skype? Или, может быть, указать мне на веб-статью, которую я еще не видел? (Я посмотрел дюжину или около того, но безуспешно.) Спасибо.

1 Ответ

0 голосов
/ 03 октября 2019

Спасибо всем за помощь. В итоге я использовал заголовки окон, потому что обнаружил, что в моем списке есть несколько окон, которые не отображаются на обычном дисплее Alt-TAB. Особые случаи всегда требовались (в сетевых примерах), чтобы удалить их из списка, чтобы помочь соответствовать нормальному отображению Alt-TAB. Как только я согласился с необходимостью в особых случаях, использование заголовка стало самым простым способом для этих двух окон.

Я также узнал, что Microsoft Edge (и, возможно, другие приложения) запускают некоторые фоновые процессы и даже окна. если вы не используете их. Кто-то в сети сказал, что вы можете отключить эти фоновые процессы в настройках, поэтому я сделал это, чтобы избавиться от некоторых нежелательных окон в моем списке Alt-TAB (или почти Alt-TAB).

Я сейчас исследуюкак определить окна (такие как Edge и Settings), которые имеют окна IS_VISIBLE (которые вы не видите, но у которых есть все атрибуты, упомянутые ранее в исходном вопросе), прикрепленные к фоновым процессам, которые не отображаются в списке приложений вДиспетчер задач.

Очень странно. Очевидно, что ОС знает, как распознать эти окна и не допустить их в список приложений диспетчера задач и на дисплей Alt-TAB. Хотел бы я знать, как это сделать. Возможно, ответ лежит на процессах, как говорила Рита ранее (но я не видел ни одного примера этого метода в своем сетевом исследовании). Даже знаменитый метод ходьбы предков Раймонда Чена не дает правильного ответа, соответствующего дисплею Alt-TAB.

...