2010-06-01 2 views

답변

3

이 코드는 어떤 길이의 WindowsText을 가지고 에디트 플러스 자식 창 hwnd 보여줍니다

편집

당신은 응용 프로그램의 hwnd을 찾아야하고 EnumChildWindows과이 핸들을 사용합니다. 나는 그것으로 예제 코드를 확장했다. 일단 애플리케이션 hwnd을 얻으면 해당 창만 열거 할 수 있습니다. 0을 hwnd에서 EnumChildWindows으로 지정하면 실행중인 모든 창을 처리 할 수 ​​있습니다. 내 코드에 지문을 추가하고 그것을 확인하십시오!

확장 코드 :

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 winfun(hwnd, lparam): 
    s = win32gui.GetWindowText(hwnd) 
    if len(s) > 3: 
     print("winfun, child_hwnd: %d txt: %s" % (hwnd, s)) 
    return 1 

def main(): 
    main_app = 'EditPlus' 
    hwnd = win32gui.FindWindow(None, main_app) 
    print hwnd 
    if hwnd < 1: 
     hwnd = find_main_window(main_app) 
    print hwnd 
    if hwnd: 
     win32gui.EnumChildWindows(hwnd, winfun, None) 

main() 
+0

메신저 여기에 조금 혼란 ... 난 거기 자식 창없는 응용 프로그램의 밤은 그것을 실행할 때 사실에도 불구하고 주요 HWND과 나무 차일을 반환하는 aplication의 전원을 켤 때 어떤 숫자도 없을 때 너무 많은 결과를 출력합니다. btw는 whitch 프로세스가 실행중인 whitch 창을 결정하는 방법이 있습니까? – nabizan

+0

예가 업데이트되었습니다. –