win32 SendMessage PostMessage 后台模拟鼠标点击
SendMessage
将指定的消息发送到一个或多个窗口。SendMessage函数的函数调用指定的窗口的窗口过程,并不会返回,直到窗口过程已经处理了该消息
PostMessage
将消息放置在与创建指定窗口的线程相关联的消息队列中,并不等待线程处理消息的情况下返回消息。
参数
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
hWnd 窗口的句柄
Msg 要发送的消息
wParam 特定于消息的其他信息
lParam 特定于消息的其他信息
Msg参数都在这
wParam和lParam参数根据Msg参数填写,没有或不知道填0
救命啊,不知道哪个人写的错误代码
win32api.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)
win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)
什么东西啊这是,离谱极了
WM_LBUTTONUP
当光标在窗口的客户区域中时,用户释放鼠标左键时发布。如果未捕获鼠标,则消息将发布到光标下方的窗口中。否则,该消息将发布到捕获鼠标的窗口中。
wParam
Indicates whether various virtual keys are down. This parameter can be one or more of the following values.
指示各种虚拟键是否按下。此参数可以是以下值中的一个或多个。
MK_CONTROL 0x0008 The CTRL key is down.
按下CTRL键
MK_MBUTTON 0x0010 The middle mouse button is down.
按下鼠标中键
MK_RBUTTON 0x0002 The right mouse button is down.
按下鼠标右键
MK_SHIFT 0x0004 The SHIFT key is down.
按下SHIFT键
MK_XBUTTON1 0x0020 The first X button is down.
按下第一个X按钮
MK_XBUTTON2 0x0040 The second X button is down.
按下第二个X按钮
lParam
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
win32con.MK_LBUTTON = 1
win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)
就等于
win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, 1, long_position)
wParam参数哪里来的1,不知道从哪里找的
这样写鼠标只按下没有释放,在某些环境下根本模拟不了后台鼠标点击
必须把1改成0才起作用win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, long_position)
WM_LBUTTONDOWN
WM_LBUTTONUP
键盘和鼠标输入信息都可以在这找到
本文详细介绍了Windows API中的SendMessage和PostMessage函数用于后台模拟鼠标点击的操作。特别指出,错误的代码示例可能导致鼠标点击无法正确模拟,如错误设置wParam参数。正确的使用方式是将wParam设为0,以确保完整模拟鼠标按下和释放过程。
1万+





