- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 teamplayer ,它可以让您将更多鼠标连接到您的计算机以同时使用。我还使用 pyHook 来捕获鼠标事件,代码如下:
import pyHook
import pythoncom
def onclick(event):
# called when mouse events are received
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'WindowName:',event.WindowName
print 'Position:',event.Position
print '---'
return True
hm = pyHook.HookManager()
hm.MouseLeftDown = onclick
hm.MouseLeftUp = onclick
hm.HookMouse()
pythoncom.PumpMessages()
代码在没有 teamplayer 的情况下工作正常 - 它准确地检测鼠标按钮的按下和向上。如果我在程序运行时启动 teamplayer,那么它会继续正常运行,这次可以准确地检测到两只鼠标的点击。
但是,如果我在 teamplayer 启动后启动程序,那么每次鼠标单击都会变成两次:
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
这没问题 - 我可以检测到具有相同时间戳的点击并忽略第二个点击。然而,当我用不同的鼠标点击时,模式很奇怪:
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (569, 306)
---
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
也就是说,第一个向下事件使用最后一个向上事件的坐标!问题还在于错误的事件是第一个,因此更难检测到正确的事件(我不能只说“忽略第一个事件”,因为如果 teamplayer 关闭或只连接了一个鼠标,那就是唯一的! )
关于为什么会发生这种情况,以及我可以做些什么来获得正常的鼠标事件,有什么想法吗?
最佳答案
多个想法:
pyhook
源代码来处理重复项;在他们的源代码中进行调试可能会让您更深入地了解正在发生的事情。通过简单地查看它,您可以在他们的 HookManager
的 MouseSwitch
函数中通过排队和刷新消息来完成此操作。一旦你弄清楚那里发生了什么,你就可以包装那个对象,这样你就不必修改 pyhook
SetWindowsHookEx
API 很可能是生成重复事件的原因;因为 teamplayer 正在用多只鼠标做一些复杂的事情。将此报告给 teamplayer;他们可能在某个时候有兴趣从他们这边修复它关于python - teamplayer 和 pyhook 奇怪地相互作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358355/
我正在尝试在 pycharm 中安装 pyHook 包,但出现标题错误。我已经使用 pip install pyHook-1.5.1-cp37-cp37m-win_amd64.whl 在 cmd 中成
我正在使用 pyhook 和 pyhk 来映射 Windows XP 机器上的击键,它工作正常,除非击键(例如,ctrl+z)已经存在于应用程序中。在这种情况下,ctrl+z 将传递给应用程序并触发已
我运行了这个 PyHook 示例代码: import pythoncom, pyHook def OnKeyboardEvent(event): print 'MessageName:
这是我在这个网站上的第一个问题,所以我希望我的格式正确。我对编程也很陌生,所以请原谅我缺乏知识,谢谢! 我正在尝试像这样安装 pyHook,但我不断收到此错误消息: C:\Python27>py -2
我是 cx_Freeze 的新手,但是当我尝试使用 pyHooks 时,它不起作用。这是我的 setup.py 代码: from cx_Freeze import setup, Executable
我为键盘记录器创建了一个线程,该线程与另一个产生一些声音的线程并行记录(我想捕捉 react 时间)。 不幸的是,尽管我调用了 killKey() 并打印了“invoked killkey()”,但线
我安装了pyHook并成功将处理程序附加到键盘事件,但现在我需要查明用户是否正在使用英文布局或其他布局进行键入。我在事件对象中找不到此信息。 如何在 Windows 上找到焦点窗口中的输入语言?我尝试
我正在尝试制作一个简单的程序来记录所有击键,但我很难弄清楚如何让它工作。我似乎无法在任何地方找到这个问题的解决方案。 我正在使用 pyHook 来获取击键,并且创建了一个名为 OnKeyboardEv
我正在尝试在 python 中使用 pyhook 创建一个全局热键,它应该只在按下 alt 键时工作。 这是来源: import pyHook import pythoncom hm = pyHook
我有一个程序可以使用 pyHook 捕获所有按键,然后运行一些函数。 我注意到一段时间后(随机持续时间),程序停止接收按键触发,即使我正在按键? pyHook不稳定吗? 我不会更改按下的键或过早按下它
这里确实有更多问题。基于pyHook's tutorial ,函数中的 .HookManager().OnMouseEvent 事件变量具有 .Injected 属性。我没找到相关信息,有谁知道这是什
import win32api import win32console import win32gui import pythoncom, pyHook , sys, time , os , thre
我正在尝试下载 pyHook 模块以完成学校作业。我尝试寻找问题的答案,但还没有找到。当我尝试 pip install python-pyHook 时,我得到以下信息: pip install pyt
我正在使用 teamplayer ,它可以让您将更多鼠标连接到您的计算机以同时使用。我还使用 pyHook 来捕获鼠标事件,代码如下: import pyHook import pythoncom d
我一直在用 Python 编写一个基本的键盘记录器。在检查我的日志时,我发现我使用 event.Time 记录的时间戳不是 Unix 时间戳。它是什么类型的时间戳,如何将其转换为可读格式? impor
我编写了一个脚本,使用 pyHook 按下按键时移动鼠标。问题是,在 6 个按键事件之后,脚本停止拾取按键,需要从任务管理器结束。 我在 Windows 7 机器上使用 python 2.7。我还没有
我想检查我写入 key 的文件是否超过 2Kb 。如果它超过 2KB,那么我需要创建另一个文件并停止在这个文件中写入。我是 python 初学者请帮助我。请指出在哪里可以使用代码来检查文件是否超过 2
我有一个 Tkinter GUI 应用程序,需要在按下按钮时隐藏它。我不能假设应用程序将具有焦点,因此我实现了键盘记录器样式的 pyHook。但是,每当我从 pyHook 启动的函数调用withdra
我希望我的 (Python/Windows) GUI GTK 窗口在按键时关闭。然而,没有任何反应。我是初学者,我在谷歌中寻找答案。我的英语也不是很专业。请耐心等待我。 import pygtk im
这是我的脚本: import pyHook import pythoncom hookManager = pyHook.HookManager() def onKeyboardEvent(event)
我是一名优秀的程序员,十分优秀!