Форум сайта python.su
31
Перебираю все открытые хендлы, но не могу найти запущенную игру, в процессах она есть
Есть скрытые хендлы? как их обнаружить?
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)
Офлайн
31
Может есть другой способ послать сообщение приложению?
Офлайн
25
Емнип - коллбек EnumWindows должен возвращать True, чтобы продолжить перебор окон или False если перебор нужно остановить. Вы не возврашаете ничего, то есть из window_enum_handler в EnumWindows
прилетает None, что по-идее расценивается им как False и перебор останавливается.
Но если точно известен класс окна то есть FindWindow(Ex).
Офлайн
31
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()
Офлайн