You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

win32api.mouse_event与SendMessage差异及mouse_event工作原理咨询

关于win32api.mouse_event与SendMessage实现鼠标点击的差异问题

实现的两个鼠标点击函数

基于win32api.mouse_event的实现

def click_1(hwnd, x, y):
    win_activate(hwnd)
    win32api.SetCursorPos((x, y))
    time.sleep(.1)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
    time.sleep(.1)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)

基于win32gui.SendMessage的实现

def click_2(hwnd, x, y):
    lparam = win32api.MAKELONG(x, y)
    win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, None, lparam)
    time.sleep(.1)
    win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, None, lparam)

我在多个应用中测试了这两个函数,它们均能正常工作,但在某一特定应用中,仅使用win32api.mouse_event的click_1函数有效。

曾看到Stack Overflow上的一段内容:

程序在处理鼠标输入时可以选择忽略鼠标输入消息。而且基于鼠标消息处理的客户端也能轻松识别伪造的输入消息,进而选择完全不响应。

我原本猜测该应用可能忽略了点击消息,但win32api.mouse_event能正常工作,说明并非如此。我曾以为win32api.mouse_event会让Windows接收消息后,通过win32gui.SendMessage将新消息发送到光标所在窗口,但显然并非如此。

我的问题是:win32api.mouse_event的工作原理是什么?是否可以向目标窗口发送与win32api.mouse_event相同的消息?

内容的提问来源于stack exchange,提问作者Aurelien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:17:38