문제

할 수 있는 방법을 검출 마우스 클릭 상관없이 창의 마우스에서는?

Perferabliy 에서는 파이썬지만,만약 누군가가 그것을 설명할 수 있습에서 어떤 언어 할 수 있습니다.

이 마이크로소프트의 사이트:http://msdn.microsoft.com/en-us/library/ms645533(VS.85).aspx

을 유지할 수 있는 방법을 감지하거나 알림을 나열됩니다.

도를 사용하여 pygame 의 pygame.마우스입니다.get_pos()함수는 다음과 같다:

import pygame
pygame.init()
while True:
    print pygame.mouse.get_pos()

이것은 단지 반환 0,0.나는 익숙하지 않 pygame,무언가가 없는가?

에 anycase 내가 선호하는 방법을 설치할 필요 없이 제 3 자에 모듈이 있습니다.(다른 것보다 pywin32 http://sourceforge.net/projects/pywin32/ )

도움이 되었습니까?

해결책

는 유일한 방법을 감지 마우스 이벤트이 외부 프로그램을 설치하 Windows 후크 사용 .이 pyHook 모듈 캡슐화하는 핵심 내용.여기에는 샘플이 인쇄 위치의 모든 마우스 클릭:

import pyHook
import pythoncom

def onclick(event):
    print event.Position
    return True

hm = pyHook.HookManager()
hm.SubscribeMouseAllButtonsDown(onclick)
hm.HookMouse()
pythoncom.PumpMessages()
hm.UnhookMouse()

확인할 수 있습니다 example.py 스크립트가 설치되어 있는 모듈에 대한 더 많은 정보에 대한 이벤트 매개 변수입니다.

pyHook 까다로운 일이 될 수 있을 사용하여 순수한 Python 스크립트가 필요하기 때문에 활성 메시지 펌프입니다.서 튜토리얼:

는 모든 응용 프로그램 소원을 받을 수 알림이 글로벌 입력 이벤트 이 있어야 합 Windows 메시지 펌프입니다.이 을 얻을 수있는 가장 쉬운 방법 중 하나 이들의하는 것입 사용 PumpMessages 방법 Win32 확장 패키지에 대한 Python.[...]실행하는 경우,이 프로그램은 그냥 앉아 유휴 대기를 위한 윈도우 이벤트입니다.는 경우 당신은 GUI 를 사용하여 도구(예:wxPython),이 루프가 불필요 이후 도구 키트를 제공합니다.

다른 팁

나는 win32api를 사용합니다. 모든 창을 클릭 할 때 작동합니다.

# Code to check if left or right mouse buttons were pressed
import win32api
import time

state_left = win32api.GetKeyState(0x01)  # Left button down = 0 or 1. Button up = -127 or -128
state_right = win32api.GetKeyState(0x02)  # Right button down = 0 or 1. Button up = -127 or -128

while True:
    a = win32api.GetKeyState(0x01)
    b = win32api.GetKeyState(0x02)

    if a != state_left:  # Button state changed
        state_left = a
        print(a)
        if a < 0:
            print('Left Button Pressed')
        else:
            print('Left Button Released')

    if b != state_right:  # Button state changed
        state_right = b
        print(b)
        if b < 0:
            print('Right Button Pressed')
        else:
            print('Right Button Released')
    time.sleep(0.001)

GUI 프로그래밍을 포함한 Windows MFC는 Python을 사용하여 액세스 할 수 있습니다. Windows 확장을위한 Python Mark Hammond에 의해. 오라일리 서적 발췌 Hammond 's와 Robinson's에서 마우스 메시지를 연결하는 방법을 보여줍니다.

self.HookMessage(self.OnMouseMove,win32con.WM_MOUSEMOVE)

원시 MFC는 쉽지 않거나 명백하지는 않지만 Python 예제를 위해 웹을 검색하면 몇 가지 사용 가능한 예제가 생길 수 있습니다.

이 질문이 질문을받은 이래로 뜨거운 순간 이었지만 솔루션을 공유 할 것이라고 생각했습니다. 방금 내장 모듈을 사용했습니다. ctypes. (파이썬 3.3 BTW를 사용하고 있습니다)

import ctypes
import time

def DetectClick(button, watchtime = 5):
    '''Waits watchtime seconds. Returns True on click, False otherwise'''
    if button in (1, '1', 'l', 'L', 'left', 'Left', 'LEFT'):
        bnum = 0x01
    elif button in (2, '2', 'r', 'R', 'right', 'Right', 'RIGHT'):
        bnum = 0x02

    start = time.time()
    while 1:
        if ctypes.windll.user32.GetKeyState(bnum) not in [0, 1]:
            # ^ this returns either 0 or 1 when button is not being held down
            return True
        elif time.time() - start >= watchtime:
            break
        time.sleep(0.001)
    return False

그것을 수행하는 창은 WM_LBUTTONDBLCLK 메시지.

이것을 보내려면 창 클래스를 CS_DBLCLKS 수업 스타일.

파이썬에 이것을 적용하는 방법을 모르지만 힌트를 줄 수 있기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top