【问题标题】:Need an input control program in python需要python中的输入控制程序
【发布时间】:2010-12-04 14:37:28
【问题描述】:

我想创建一个捕捉鼠标点击的程序,无论它被发送到哪个应用程序。然后它必须在一秒钟内模拟二十次鼠标点击。我对 Python 很陌生,也不是很了解,但是我在几个网站上进行了搜索,并组装了这段代码:

import time
import ctypes
import pyHook
import pythoncom
MOUSEEVENTF_MOVE = 0x0001 # mouse move
MOUSEEVENTF_ABSOLUTE = 0x8000 # absolute move
MOUSEEVENTF_MOVEABS = MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE

MOUSEEVENTF_LEFTDOWN = 0x0002 # left button down 
MOUSEEVENTF_LEFTUP = 0x0004 # left button up 
MOUSEEVENTF_CLICK = MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP

def click(vdf):
    hm.UnhookMouse()
    ctypes.windll.user32.mouse_event(MOUSEEVENTF_CLICK, 0, 0, 0, 0)
    time.sleep(1)
    ctypes.windll.user32.mouse_event(MOUSEEVENTF_CLICK, 0, 0, 0, 0)
    hm.HookMouse()
    return 0

hm = pyHook.HookManager()
hm.SubscribeMouseAllButtonsDown(click)
hm.HookMouse()
pythoncom.PumpMessages()
os.system("pause")

这只是一个示例。它必须以第二个间隔生成 2 次鼠标点击。但是,当我启动它时,就会出现这样的结果:

Traceback (most recent call last):
  File "C:\Documents and Settings\Valjo\Desktop\hack.py", line 3, in <module>
    import pyHook
  File "D:\Python2.7\lib\site-packages\pyHook\__init__.py", line 1, in <module>
    from HookManager import *
  File "D:\Python2.7\lib\site-packages\pyHook\HookManager.py", line 1, in<module>
    import cpyHook
  File "D:\Python2.7\lib\site-packages\pyHook\cpyHook.py", line 9, in <module>
    new_instancemethod = new.instancemethod
AttributeError: 'module' object has no attribute 'instancemethod'

它会创建一些名为new.pyc...的文件。

任何想法如何解决它?谢谢!

【问题讨论】:

  • 看起来您正在事件处理程序中为产生无限循环的事件生成事件。
  • 哦,是的!你说的对。只有我必须在产生点击之前解开鼠标然后再次钩住它!非常感谢!
  • 您的一个文件似乎被命名为new.py,它隐藏了 Python 标准库中的new 模块。写在你的脚本中:import new; print new.__file__。输出是什么?
  • 无。它不打印任何东西!
  • 也许它需要处理事件处理函数持有一个参数但从不使用它的事实?还是模块错误?

标签: python windows input mouse


【解决方案1】:

使用 eventghost:http://www.eventghost.org/

  • 开源
  • 您可以使用 Python 编写插件
  • 您可以捕获许多不同的事件(您甚至可以捕获原始 HID 设备)
  • 你可以让它运行/做任何你通常可以用 Python 做的事情

【讨论】:

  • 我真的不需要这个。 J.F. Sebastien 已经帮助我修复了我的代码。
猜你喜欢
  • 2019-08-06
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2014-11-22
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多