일반적인 메시지 전송 창 핸들 키보드 입력 방법 win32con 파이썬 win32api의 win32gui

수입 win32gui
수입 win32con의
수입 win32api

맨 아래 기본 창에서 # 검색 창, 당신은 자식 창에 검색 할 수 없습니다
#의를 FindWindow를 (lpClassName = 없음, lpWindowName = 없음) 창 클래스 이름 창 제목 이름
핸들 = win32gui.FindWindow ( "메모장", 없음)


# 창 위치하기
상단, 오른쪽, 하단 win32gui.GetWindowRect은 (핸들) = 왼쪽
#은 핸들 클래스 이름과 제목 얻을
제목 = win32gui.GetWindowText (핸들)
clsname = win32gui.GetClassName (핸들)을

# 인쇄 핸들
(10 진수)
인쇄 (핸들)
# 육각
인쇄 ( "% X"% ( 핸들))


검색 자식 창 번호에
#이 자식 창을 열거
hwndChildList = []
(: param.append (HWND), hwndChildList, 람다 HWND, PARAM을 처리) win32gui.EnumChildWindows

# FindWindowEx (hwndParent = 0 hwndChildAfter = 0 lpszClass = 없음, lpszWindow가 = 없음) 부모 윈도우 핸들이 0이되면, 다시 검색 hwndChildAfter의 하위로부터 시작 Z- 색인 순서, 또는 상기 제 1 서브로부터 양식은 검색을 시작합니다. 자식 창 클래스 HINAKO 창 제목
subHandle = win32gui.FindWindowEx (핸들, 0, "편집", 없음)

# 획득 윈도우 메뉴 핸들
menuHandle = win32gui.GetMenu (subHandle)
# 풀다운 메뉴 또는 하위 메뉴 핸들 획득
# 매개 변수 : 메뉴 하위 인덱스 처리
subMenuHandle = win32gui.GetSubMenu (menuHandle, 0)
# 메뉴 항목 식별자를 얻을 구분 기호가 색인화됩니다
# 매개 변수 : 하위 메뉴 항목 인덱스 처리
menuItemHandle = win32gui.GetMenuItemID (subMenuHandle, 0)
# 메시지를 전송, 메시지 큐가 추가되어, 더 리턴
# 매개 변수 : 메시지 유형 IParam WPARAM의에 처리하지
win32gui. PostMessage를 (subHandle, win32con.WM_COMMAND, menuItemHandle, 0)


정의 #의의 wParam 높은 단어, 저 단어가 15-0 그의 31-16 32 비트 정수입니다.
두 개 이상의 매개 변수가의 wParam과 lParam에 충분하지 않은 시간을 두 개로 분할 될 수 때 # wParam를가 INT16 사용을 제공합니다.
레인 # 함께 LOWORD, 즉의 wParam = + 16 << HIWORD LOWORD와 16의 좌측으로 일정한 HIWORD 파이썬이 시간을 기억한다.

상자 #의 내용 변경
# 매개 변수 : 상자를 처리, 메시지 내용, 시작 인덱스 0에있는 상자 옵션을 선택하는 항목 매개 변수를, 값이 -1이면 콤보 상자 목록에서 현재 옵션을 삭제하고, 현재의 선택이 비어; 매개 변수
에 따라 다음 상자 핸들, PCB_handle 윤곽 부모 창 핸들이 # CB_Handle
IF win32api.SendMessage (CB_handle, win32con.CB_SETCURSEL, 1, 0) == 1 :
# 옆의 상자 부모 윈도우 명령
# 매개 변수 : 부모 윈도우 핸들, 명령, 매개 변수 : WPARAM은 :;, 상자 핸들 IParam 매개 변수 낮은 내용을 나타내는, 고의 유형을 나타냅니다
사용자가 목록 항목이 활성화되어 신속한 처리의 부모 폼을 선택할 때 # CBN_SELENDOK 전송 사용자를 선택합니다. LOWORD 콤보 박스 ID. CBN_SELENDOK의 HIWORD 값.
win32api.SendMessage (PCB_handle, win32con.WM_COMMAND, 0x90000는 CB_handle)
사용자가 선택리스트 항목을 변경, 또는 사용자가이 통지의 방향을 선택하기 위해 마우스를 사용하여 선택되어 있는지 여부를 확인할 수 때 #는 CBN_SELCHANGE를 전송. LOWORD 콤보 박스 ID. CBN_SELCHANGE의 HIWORD 값.
win32api.SendMessage (PCB_handle, win32con.WM_COMMAND, 0x10000에, CB_handle)


# 텍스트 상자의 내용을 설정하고 다른 포스트 창에 true를 돌려줍니다 처리. GBK는 중국어로 인코딩
# 매개 변수 : 핸들 메세지 입력] WPARAM 매개 변수를 사용하지 않고, IParam 매개 변수, 내용이 설정되는 문자열
win32api.SendMessage (처리, win32con.WM_SETTEXT, 0, os.path.abspath (fgFilePath). ( 'GBK')를) 인코딩


OK를 제어 번호를 클릭하면 메시지 처리 한 후 0으로 돌아갑니다
, IParam 매개 변수를 0 (사용되지 않음) 제어 핸들 결정하기 위해, WPARAM HIWORD 매개 변수가 0 (사용되지 않음)의 LOWORD의 컨트롤의 ID입니다 메세지 입력] 창 핸들을 : # 매개 변수를
win32api.SendMessage을 (Mhandle, win32con.WM_COMMAND, 1 confirmBTN_handle )


널 (null) 문자 뒤에 # 무료 텍스트 인수 창 절단 길이
매개 변수 IParam 메세지 입력; 창 핸들의 wParam 매개 변수 # 매개 변수를
bufSize buf의 = win32api.SendMessage (subHandle, win32con.WM_GETTEXTLENGTH, 0, 0) +1의
버퍼 사용 # API를 생성
strBuf을 win32gui.PyMakeBuffer = (bufSize buf의)
인쇄 (strBuf)
# 보내기 문자 메시지 획득
# 매개 변수 : 창 핸들, 메시지 유형, 텍스트 크기, 저장 위치
길이 = win32gui.SendMessage (subHandle, win32con.WM_GETTEXT, bufSize buf의, strBuf)
# 역 문자열로 콘텐츠
# 텍스트 = STR (strBuf [: - 1])

주소, 길이 = win32gui.PyGetBufferAddressAndLen (strBuf)
텍스트 = win32gui.PyGetString (주소, 길이)
# 인쇄 ( '텍스트', 텍스트)

# - 클릭 이벤트
# 마우스에 위치 (30, 50)
win32api.SetCursorPos은 ([30, 150])
당신이 한 번 클릭 몇 밀리 세컨드의 지연을 더블 클릭하면 # 실행이 하나의 키 입력을 왼쪽
(win32api.mouse_event win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# 오른쪽 단추로 클릭
win32api.mouse_event (win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)

一种#第: 데프 click1 (X, Y)
win32api.SetCursorPos ((X, Y))
win32api.mouse_event (win32con.MOUSEEVENTF_LEFTDOWN, X, Y, 0,0)
win32api.mouse_event (win32con.MOUSEEVENTF_LEFTUP, X, Y, 0,0)

데프 click2 (X, Y) : #第二种
ctypes.windll.user32.SetCursorPos (X, Y)
ctypes.windll.user32.mouse_event (2,0,0,0,0)
ctypes.windll.user32.mouse_event ( 4,0,0,0,0)

DEF click_it (POS) #第三种
핸들 = win32gui.WindowFromPoint (POS)
client_pos win32gui.ScreenToClient = (처리, POS)
TMP = win32api.MAKELONG (client_pos [0], client_pos [1])
win32gui.SendMessage (취급 win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0)
win32gui.SendMessage (핸들, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, TMP)
win32gui.SendMessage (핸들, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, TMP)

#发送回车
win32api.keybd_event (13,0,0,0)
win32api.keybd_event (13,0, win32con.KEYEVENTF_KEYUP 0)


#关闭窗口
win32gui.PostMessage (win32lib.findWindow (클래스 명 titlename) win32con.WM_CLOSE, 0, 0)


# 윈도우가 최소화 최대화되어 있는지 여부를 확인하는 경우
IF (win32gui.IsIconic (HWND)) :
#의 win32gui.ShowWindow (HWND, win32con.SW_SHOWNORMAL)
win32gui.ShowWindow (HWND ,. 8)
SLEEP (0.5)

#의 SW_HIDE는 : 창을 숨기고 다른 창을 활성화합니다. nCmdShow = 0.
#의 SW_MAXIMIZE : 지정된 창을 최대화합니다. nCmdShow = 3.
# SW_MINIMIZE : 지정된 창을 최소화하고 Z 순서의 상단에 다음 창을 활성화합니다. nCmdShow = 6.
#의 SW_RESTORE : 활성화하고 디스플레이 창. 창 최소화 또는 최대화 된 경우, 시스템은 원래 크기와 위치로 창을 복원합니다. 최소화 된 창을 복원 할 때 응용 프로그램이 플래그를 지정해야합니다. nCmdShow = 9.
#의 SW_SHOW : 활성화 윈도우의 원래 위치에서 원래 크기로 디스플레이 창. nCmdShow = 5.
#의 SW_SHOWDEFAULT : 지정된 구조 SW_FLAG STARTUPINFO 표시 상태에 따라 플래그가 설정에서 STARTUPINFO 응용 프로그램 CreateProcess 함수 시작 구조로 전송된다. nCmdShow는 = 10.
# SW_SHOWMAXIMIZED는 : 윈도우를 활성화하고이를 극대화 할 수 있습니다. nCmdShow = 3.
# SW_SHOWMINIMIZED는 : 창을 활성화하고 최소화 할 수 있습니다. nCmdShow = 2.
# SW_SHOWMINNOACTIVE : 창이 최소화, 활성 창은 활성 상태로 유지됩니다. nCmdShow = 7.
# SW_SHOWNA : 원래의 상태 창에 디스플레이 창. 활성 창은 활성 상태로 유지됩니다. nCmdShow = 8.
# SW_SHOWNOACTIVATE : 크기와 최신 윈도우 디스플레이 윈도우의 상태를 한 번. 활성 창은 활성 상태로 유지됩니다. nCmdShow = 4.
#의 SW_SHOWNORMAL가 : 활성화하고 창을 표시합니다. 창 최소화 또는 최대화 된 경우, 시스템은 원래 크기와 치수로 돌아갑니다. 시간의 디스플레이 창에 처음으로 응용 프로그램이 플래그를 지정해야합니다. nCmdShow = 1.

 

#에서 Win32 그것은의 PyUserInput를 사용하기 쉽지 않다 키보드를 제어 할 수 있지만 수 있지만. 인터페이스 데이터는 Windows 및 Mac에서 다를 수 있습니다.
가져 오기 PyMouse의 pymouse
오기 PyKeyboard의 pykeyboard에서
m = PyMouse ()
K = PyKeyboard ()

x_dim, y_dim m.screen_size = ()
# 마우스 클릭
m.click (x_dim / 2 / 2 ,. 1 y_dim)
# 키보드 입력을
k.type_string ( '안녕하세요, 세계!' )

# 키를 누르고
k.press_key ( 'H')
# 키를 놓을
k.release_key ( 'H')
# 가압 및 해제를 탭 키
k.tap_key ( 'E')
간헐적으로 반복 #의 TAP 지원 키 프레스
(= N-2, 간격 = 'L'. 5)을 k.tap_key
# 텍스트 전송 결정
k.type_string ( '123456')

#创建组合键
k.press_key (k.alt_key)
k.tap_key (k.tab_key)
k.release_key (k.alt_key)
#特殊功能键
k.tap_key (k.function_keys [5]) # 탭 F5의
k.tap_key ( 숫자 키패드에 k.numpad_keys [ '홈']) # 수돗물 '홈'
k.tap_key (k.numpad_keys [5], N = 3)의 숫자 키패드에 수돗물 # 5 회

# 맥 시스템
k.press_keys ([ '명령', '시프트', '. 3'])
# Windows 시스템
k.press_keys ([k.windows_l_key, 'D' ])

마우스와 키보드 입력 이벤트를 수신 할 수 있습니다 PyMouseEvent 및 PyKeyboardEvent

 

원본 링크 : HTTPS : //blog.csdn.net/qq_16234613/article/details/79155632

추천

출처www.cnblogs.com/draven123/p/11375337.html