2010-07-28 2 views
0

마우스 클릭을 창에 시뮬레이트하고 싶지만 클릭 이벤트를 직접 창에 게시하고 싶습니다 (win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)을 사용하여 일반적인 마우스 클릭을 시뮬레이트하지 않음). 그것을하는 적당한 방법은 무엇인가? 나는 다음을 시도했지만, 그것은 영향을 미칠 것 같지 않습니다python/win32 : 클릭 이벤트를 창에 게시 하시겠습니까?

def MAKELONG(low, high): 
    return low | (high << 16) 
win32gui.PostMessage(window, 
        win32con.WM_LBUTTONDOWN, 
        win32con.MK_LBUTTON, 
        MAKELONG(21,42)) 
time.sleep(0.05) 
win32gui.PostMessage(window, 
        win32con.WM_LBUTTONUP, 
        0, 
        MAKELONG(21,42)) 

window 창에 대한 올바른 핸들입니다. 이 경우 활성화 할 파일 메뉴를 가져 오려고했습니다.

답변

0

window이 메뉴를 소유하는 창인 경우 WM_LBUTTONDOWN은 클라이언트의 클라이언트 영역 용이고 메뉴 영역은 클라이언트가 아니기 때문에 작동하지 않습니다. 필자는 이것을 테스트하지 않았지만 대신 WM_NCLBUTTONDOWN을 게시하고 wParamHTMENU이고 화면 좌표에 마우스가있는 위치를 시도해 볼 수 있습니다.

또 다른 방법은 GetSubMenuTrackPopupMenu을 사용하는 것입니다. 이 문제는 사용자가 다른 하위 메뉴를 탐색 할 수있게하려는 경우에만 발생합니다.

관련 문제