Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2014 15:35:58

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не могу найти handle открытого приложения

Перебираю все открытые хендлы, но не могу найти запущенную игру, в процессах она есть
Есть скрытые хендлы? как их обнаружить?

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 (Фев. 2, 2014 17:28:46)

Офлайн

#2 Фев. 4, 2014 11:42:29

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не могу найти handle открытого приложения

Может есть другой способ послать сообщение приложению?

Офлайн

#3 Фев. 4, 2014 14:26:06

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Не могу найти handle открытого приложения

Емнип - коллбек EnumWindows должен возвращать True, чтобы продолжить перебор окон или False если перебор нужно остановить. Вы не возврашаете ничего, то есть из window_enum_handler в EnumWindows
прилетает None, что по-идее расценивается им как False и перебор останавливается.
Но если точно известен класс окна то есть FindWindow(Ex).

Офлайн

#4 Фев. 4, 2014 18:49:03

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не могу найти handle открытого приложения

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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version