z7c9 2017-12-23 16:31 采纳率: 0%
浏览 9604
已结题

(win7/win10系统下) python 如何实现后台点击鼠标左键?

import win32gui
import win32api
import win32con

if name == '__main__':
p1 = (30, 255)
handle = win32gui.FindWindow(None, '计算器')
rect = win32gui.GetWindowRect(handle)
win32api.SetCursorPos((rect[0] + p1[0], rect[1] + p1[1]))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

-------------------------------------

import win32gui
import win32api
import win32con

if name == '__main__':
p1 = (30, 255)
handle = win32gui.FindWindow(None, '计算器')
tmp = win32api.MAKELONG(p1[0], p1[1])
win32api.SendMessage(handle, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, tmp)
win32api.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmp)
win32api.SendMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, tmp)

-------------------------------------

(win7/win10系统下) 第一段代码可以实现前台点击,第二段代码尝试多种变型都无法实现前台点击,跟不用说后台点击,请高手帮忙解答。谢谢。

回复caozhy:
1.WM_MOUSEMOVE 时,MK_LBUTTON改成0依然没有效果
2.win7/win10下,spy++无法跟踪计算器的消息,有些软件的消息可以跟踪。原因不明。

回复qq_38282192:
什么意思?不太明白
  • 写回答

3条回答 默认 最新

  • threenewbee 2017-12-23 18:27
    关注

    一行一行检查,首先,handle有没有获取到,其次,mousemove的时候不需要MK_LBUTTON,设置为0就可以了。最后tmp的值打印下,看看坐标是多少
    注意,坐标是相对客户区的不是屏幕或者窗口左上角。
    https://msdn.microsoft.com/en-us/library/ms645616(VS.85).aspx
    你可以先用spy++看下,你去操作计算器,然后看它记录下的消息,再照着做。

    评论

报告相同问题?

悬赏问题

  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发