我用win32api创建了一个小Python脚本,用于流行的游戏Cookie Clicker(一个你必须点击一个大Cookie来获得分数的游戏)只是为了好玩。它有一个名为“自动点击器”的功能,它的作用就是:不断地点击屏幕上用户定义的点。脚本如下:# -*- coding: utf-8 -*-
import win32con
import win32api
def clicker(x,y):
"""Clicks on given position x,y
Input:
x -- Horizontal position in pixels, starts from top-left position
y -- Vertical position in pixels, start from top-left position
"""
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 auto_clicker(x = -1,y = -1):
"""Keep clicking on position x,y. If no input is given, gets from actual
mouse position.
"""
if x == -1 | y == -1:
x,y = win32api.GetCursorPos()
while True:
clicker(x,y)
它工作得很好,但我想做些改进:如何才能在调用函数时只在用户单击时获得光标位置?我不想再增加一个模块
因为win32api似乎包含了我所需要的一切。尝试了this
方法没有成功。
我怎样才能检测到像“Escape”这样的按键,这样我就可以退出我的程序而不必使用现在这种难看的黑客操作(Ctrl+Alt+Del似乎给了SetCursorPos拒绝访问的权限,所以Python抛出一个错误并退出程序)。
我能让这个程序便携吗?似乎我可以使用Tkinter生成一个不可见的Tk窗口,但是我试图写一些东西,但是没有成功。