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

(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 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能