用于控制鼠标点击的Python脚本

时间:2013-09-24 13:56:48

标签: python keyboard tkinter mouseevent pywin32

我使用win32api创建了一个小的Python脚本,用于热门游戏Cookie Clicker(一个你必须点击一个Big Cookie来获得积分的游戏),这只是为了好玩。它有一个名为“auto_clicker”的功能就是这样:在用户定义的点上不断点击屏幕。这是脚本:

# -*- 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窗口,但我试着写一些没有成功的东西。

2 个答案:

答案 0 :(得分:0)

我不认为使用win32api你可以听到你可以生成它们的点击(虽然不确定)。但是,尝试使用pyHook,它是一个简单易用的API,可以在http://sourceforge.net/apps/mediawiki/pyhook/index.php?title=Main_Page找到。使用pyhook,您可以创建一个监听器来监听鼠标事件,点击鼠标即可随心所欲,链接中的示例向您展示如何操作。对于按键,你也可以使用相同的api,也提供了一个例子,祝你好运!

答案 1 :(得分:0)

使用pynput。它可以控制鼠标,键盘等。

示例:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:3000",
      "sslPort": 44321
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}