Я использую Spy ++ для поиска окон, я делаю это в качестве теста и понимаю, что дескрипторы часто меняются. Тем не менее, вот информация, которую я получаю от Spy ++. Могу ли я использовать эти дескрипторы, чтобы захватить это окно в C ++
Вот как я получаю это от названия.
HWND main_window_handle = FindWindowA(NULL, WINDOW_NAME);
Как я могу получить это, используя либо дескриптор окна, либо дескриптор экземпляра.
Оконная ручка является HWND
и их значения нестабильны, вероятно, они будут меняться при каждом запуске программы.
Дескриптор экземпляра (HINSTANCE
) также не является стабильным и имеет мало общего с поиском определенного окна в другом приложении, это адрес загрузки модуля (.exe или .dll), который создал окно.
Чтобы найти окно, вы обычно звоните FindWindow
с конкретным именем класса. Если имя класса окна, которое вы ищете, не является действительно уникальным, то вам, вероятно, следует использовать EnumWindows
и попытайтесь найти другие конкретные атрибуты и / или дочерние окна, чтобы определить окно верхнего уровня, которое вы ищете.
Также возможно (и часто лучший подход) использовать UI Automation находить и манипулировать окнами в сторонних приложениях.
Других решений пока нет …