当前位置:  开发笔记 > 编程语言 > 正文

使用python检测Windows中的鼠标单击

如何解决《使用python检测Windows中的鼠标单击》经验,为你挑选了2个好方法。

无论鼠标位于哪个窗口,我如何检测鼠标点击?

在python中Perferabliy,但是如果有人可以在任何语言中解释它我可能能够弄明白.

我在microsoft的网站上找到了这个:http: //msdn.microsoft.com/en-us/library/ms645533(VS.85).aspx

但我不知道如何检测或接收列出的通知.

尝试使用pygame的pygame.mouse.get_pos()函数,如下所示:

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

这只会返回0,0.我不熟悉pygame,缺少什么?

无论如何,我更喜欢不需要安装第三方模块的方法.(除了pywin32 http://sourceforge.net/projects/pywin32/)



1> efotinis..:

检测程序外部鼠标事件的唯一方法是使用SetWindowsHookEx安装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消息泵.获取其中之一的最简单方法是在Win32 Extensions包中使用PumpMessages方法.[...]运行时,此程序处于空闲状态并等待Windows事件.如果您使用的是GUI工具包(例如wxPython),则此循环是不必要的,因为工具包提供了自己的工具包.



2> 小智..:

我用的是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)

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有