Найти - Пользователи
Полная версия: Не могу найти handle открытого приложения
Начало » Python для новичков » Не могу найти handle открытого приложения
1
sanodin
Перебираю все открытые хендлы, но не могу найти запущенную игру, в процессах она есть
Есть скрытые хендлы? как их обнаружить?
import win32gui
def window_enum_handler(hwnd, resultList):
    if win32gui.IsWindowVisible(hwnd) and win32gui.GetWindowText(hwnd) != '':
        resultList.append((hwnd, win32gui.GetWindowText(hwnd)))
def get_app_list(handles=[]):
    mlst=[]
    win32gui.EnumWindows(window_enum_handler, handles)
    for handle in handles:
        mlst.append(handle)
    return mlst
appwindows = get_app_list()
for i in appwindows:
    print i
sanodin
Может есть другой способ послать сообщение приложению?
s0rg
Емнип - коллбек EnumWindows должен возвращать True, чтобы продолжить перебор окон или False если перебор нужно остановить. Вы не возврашаете ничего, то есть из window_enum_handler в EnumWindows
прилетает None, что по-идее расценивается им как False и перебор останавливается.
Но если точно известен класс окна то есть FindWindow(Ex).
sanodin
s0rg
Да, не там искал
import win32gui
MAIN_HWND = 0
def is_win_ok(hwnd, starttext):
    s = win32gui.GetWindowText(hwnd)
    if s.startswith(starttext):
            print s
            global MAIN_HWND
            MAIN_HWND = hwnd
            return None
    return 1
def find_main_window(starttxt):
    global MAIN_HWND
    win32gui.EnumChildWindows(0, is_win_ok, starttxt)
    return MAIN_HWND
def main():
    main_app = 'My App'
    hwnd = win32gui.FindWindow(None, main_app)
    print hwnd
    if hwnd < 1:
        hwnd = find_main_window(main_app)
    print hwnd
    return hwnd
main()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB