Как найти дескриптор окна по имени исполняемого файла

Представьте, что у меня есть Firefox, и я открываю стартовую страницу Firefox, затем у меня должно появиться окно с заголовком: «Стартовая страница Mozilla Firefox — Mozilla Firefox».

Я могу найти дескриптор окна с кодом ниже

HWND hwnd = ::FindWindow(0, _T("Mozilla Firefox Start Page - Mozilla Firefox"));

Но то, что я хочу, это найти дескриптор окна по имени исполняемого файла окна, как это

HWND hwnd = FindWindowFromExe(_T("firefox.exe"));//How to make this function?

Есть ли в Windows Api такая функция, как FindWindowFromExe ()? Если это не так, каков наилучший способ найти окно из его exe?

Спасибо за прочтение 🙂

1

Решение

Не существует единой API-функции для поиска окна по имени файла собственного процесса. Вам придется искать его вручную.

Ты можешь использовать EnumWindows() перечислить все окна верхнего уровня или использовать FindWindow()/FindWindowEx() найти / перечислить конкретные типы окон.

Для каждого окна вы можете:

или же

  • использование GetWindowModuleFileName() запросить у окна полный путь и имя файла модуля, который его создал (при условии, что предполагаемое окно создано фактическим EXE, а не DLL, используемой EXE).

Когда у вас есть имя окна, вы можете сравнить его с вашим целевым именем.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]