|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
就是需要这么一个功能, 每当屏幕的一组坐标点变成特定颜色的时候, 鼠标会自动点击某一固定位置,代码如下:
import ctypes
from ctypes import wintypes
import pyautogui
user32 = ctypes.WinDLL('user32', use_last_error=True)
# 注册user32中的GetDC参数和返回值
user32.GetDC.restype = wintypes.HDC
user32.GetDC.argtypes = (wintypes.HWND,)
gdi32 = ctypes.WinDLL('gdi32', use_last_error=True)
# 注册GetPixel中的GetPixel参数和返回值
gdi32.GetPixel.restype = wintypes.COLORREF
gdi32.GetPixel.argtypes = (wintypes.HDC, ctypes.c_int, ctypes.c_int)
def get_color(x, y):
hdc = user32.GetDC(None)
color = gdi32.GetPixel(hdc, x, y)
return color
while True:
if get_color(1592, 1036) == 255 or get_color(1593, 1039) == 65280:
pyautogui.moveTo(1666, 1060)
if pyautogui.position() == (1666, 1060):
pyautogui.click()
现在有2个问题, 第一个是while True肯定用的不合适, 因为程序是一直打开使用的, 如果一直死循环的执行, 电脑慢慢就会卡顿死机了, 我对win32编程不是很懂, 里面应该有专门的写法, 请大佬们帮帮忙
第二个问题是 pyautogui.moveTo(1666, 1060) 移动到要点击的位置时, pyautogui.click()会判断鼠标的位置然后点击, 但是因为鼠标也是一直人为操作的, 只是get_color(1592, 1036) == 255 or get_color(1593, 1039) == 65280的时候
才会触发自动点击功能, 当pyautogui.moveTo(1666, 1060) 移动到要点击的位置时, 恰好人为将鼠标移开了这个位置, 也就一瞬间的时间, 所以鼠标的点击位置就发生改变就失效了, 所以有什么办法可以让pyautogui.moveTo(1666, 1060) 移动到要点击的位置时,
让鼠标悬停或失灵0.1秒, 在这0.1秒的时间人为操作鼠标是不起作用的, 直到自动点击后才恢复, 希望大佬们多多指教 |
|