Вызов FindWindowEx с программой WIndowClass - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь использовать FindWindowEx, чтобы определить, запущена или нет определенная программа.

FindWindow(NULL, "Mozilla Firefox");

Это прекрасно работает, пока я на стартовой странице Firefox. Обходной путь, который я нашел, был:

FindWindow(NULL, "MozillaWindowClass");

Но это заставило меня задуматься, было ли это специально разработано для Firefox, но оказалось, что оно работает для других приложений:

FindWindow(NULL, "OllyDbgWindowClass");

Итак, мой вопрос: могу ли я просто использовать FindWindow с аргументом вроде " programXWindowClass " для любой программы? Есть ли исключения из этого?

Гарантируется ли " programXWindowClass "?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Для вызывающего абонента RegisterClassEx не требуется следовать любому конкретному шаблону, который отображает имя класса окна на любую другую информацию (например, имя приложения). Любой вызывающий может выбрать любое допустимое имя класса окна.

Имейте в виду два заметных последствия этого:

  • Имя класса окна не обязательно должно быть уникальным для любого данного приложения. Все приложения UWP по умолчанию, например, используют класс окна «Windows.UI.Core.CoreWindow».
  • Имя класса окна может изменяться в разных версиях приложения или даже в разных вызовах приложения.
0 голосов
/ 13 ноября 2018

Гарантируется ли существование "programXWindowClass"?

Нет.То, что вы заметили, является просто совпадением имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...