8

我正在编写一个宏,当我按下某个键时,它会单击屏幕上的某些点。

我第一次按一个键,一切运行良好。
但是,任何其他按键都会导致错误:

    time.sleep(0.1)
TypeError: an integer is required

这是代码:

import win32api
import win32con
import time
import pythoncom
import pyHook
import os

def Click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

def DeleteRun(event):
    Click(1250, 741)
    time.sleep(0.1)
    Click(649,261)
    time.sleep(0.1)
    Click(651, 348)
    time.sleep(0.1)
    Click(800, 442)
    time.sleep(0.1)
    Click(865, 612)


Click(20,20)
KeyGrabber = pyHook.HookManager()
KeyGrabber.KeyDown = DeleteRun
KeyGrabber.HookKeyboard()
pythoncom.PumpMessages()

似乎该DeleteRun函数第一次由pyHook, time.sleep() 运行时接受浮点数。
在任何以下函数调用中,它似乎只接受整数。

这是什么原因造成的?
我等不及 5 秒的鼠标排列!应该是节省时间!

眼镜:

  • 蟒蛇2.7.2
  • 视窗 7 (32)
4

2 回答 2

5

好的,这个怎么样?向 DeleteRun 添加返回 True:

def DeleteRun(event):
    Click(1250, 741)
    time.sleep(0.1)
    [...]
    return True

我可能应该承认这只不过是 google-fu:阅读这个问题的答案。

于 2012-03-18T22:18:26.893 回答
-1

我不确定这次 Windows 出了什么问题,但您可以尝试使用不带文件描述符的 select() 来伪造高精度睡眠。

于 2012-03-18T21:52:19.207 回答