SendMessage()仅在窗口打开时工作,而不是在最小化时工作



我一直在使用SendMessage发送鼠标点击到几个窗口。一个是游戏(一切都很完美),但另一个窗口,作为游戏的第三方工具,SendMessage遇到了麻烦。如果窗口"没有最小化",一切都可以正常工作,即使窗口完全被另一个窗口覆盖也没关系。但是如果同样的窗口被最小化,那么什么也不会发生,我用spy++检查了一下,消息确实被接收了,但没有被处理(正确的术语?)在过去的几天里,我试着解决这个问题,在这里和谷歌上都做了搜索,很多主题都没有帮助?

//MyImports
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

我是这样包装的

public static void LClick(string windowclass, int x, int y)
{
    IntPtr WHandle = FindWindow(windowclass, null);
    SendMessage(WHandle, (int)WMessages.WM_LBUTTONDOWN, (IntPtr)1, (IntPtr)MakeLParam(x, y));
    SendMessage(WHandle, (int)WMessages.WM_LBUTTONUP, (IntPtr)0, (IntPtr)MakeLParam(x, y));
}

我试过集中注意力,激活。有一件事可能是有用的信息是第三方程序被加载为游戏的module("Qt5QWindowIcon")

我也尝试了PostMessage,当最小化时,它和SendMessage()做同样的事情。

这个游戏确实允许宏化和无人参与宏化,提示第三部分工具设计用于执行宏(由创作者发布)我只是试图模拟鼠标点击程序来启动宏。

我只会使用SendInput,但我的程序的整个目的是在后台运行

我遇到了同样的问题 .请更改程序集名称和项目名称(更改名称未以名称开始,您正在抛出/发布windows消息)然后重建它并检查它。现在您可以调试了。

相关内容

最新更新