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

时间:2014-05-01 17:05:25

标签: c# 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,但我的程序的整个目的是在后台运行。

1 个答案:

答案 0 :(得分:-1)

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