发送到另一个窗口的鼠标移动消息不执行任何操作

Mouse movement message being sent to another window is doing nothing

本文关键字:消息 执行 任何 操作 移动 鼠标 另一个 窗口      更新时间:2023-10-16

所以基本上我有一个程序,它制作了一个位于另一个窗口上的透明窗口。我正在尝试使它成为当您在该透明窗口中移动鼠标时,它会像您在它下面的窗口中移动鼠标一样。

我已经尝试在线查看许多其他教程,但没有一个有效。最重要的是,我尝试将鼠标移动到该窗口下方的窗口时发送消息,但没有任何反应(即使它检测到我的鼠标在移动(。为了确保我的代码没有错,我还尝试了相同的策略,只要点击鼠标就会发送消息,效果很好。

这是我尝试过但不起作用的代码:

case WM_MOVE:
{
ShowCursor(false);
SetForegroundWindow(otherWnd);
SendMessage(otherWnd, message, wParam, lParam);
return 0;
}break;

otherWnd 是透明覆盖层下方的窗口,此代码来自 WindowProc(( 内部的 switch 语句;

感谢您的帮助!

使用 SendInput 函数,而不是尝试直接发送键盘和鼠标消息。

此外,WM_MOVE在移动窗口本身(即标题栏拖动(时发送,而不是在鼠标移动时发送,WM_MOUSEMOVE消息指示鼠标移动。

我试图做到这一点,当您在该透明窗口中移动鼠标时,它会像您在它下面的窗口中移动鼠标一样。

如果您的窗口实际上是透明的,操作系统将自动为您处理。

让您的窗口过程处理WM_(NC)HITTEST消息,以返回应"通过"的任何坐标的HTTRANSPARENT