PostMessage意外行为

时间:2013-01-26 21:21:35

标签: c# postmessage

我在PostMessage上度过了一段有趣的时光,想知道是否有人可以启发我。

下面的方法处理第一个左键单击,但不是第二个,我做了一些乱搞,发现使用MessageBox并点击OK甚至可以立即提供延迟/释放或者使得第二个左边需要的任何东西点击过程。

public void MouseClick(IntPtr handle)
{
    PostMessage(handle, (uint)WMessages.WM_LBUTTONDOWN, 0, MAKELPARAM(521, 147));
    PostMessage(handle, (uint)WMessages.WM_LBUTTONUP, 0, MAKELPARAM(521, 147));
    //MessageBox.Show("WAITING...");
    PostMessage(handle, (uint)WMessages.WM_LBUTTONDOWN, 0, MAKELPARAM(675, 527));
    PostMessage(handle, (uint)WMessages.WM_LBUTTONUP, 0, MAKELPARAM(675, 527));
}

提前致谢。

1 个答案:

答案 0 :(得分:-2)

这是因为当您处于MouseClick功能时,主线程消息泵被挂起。消息框调用重新启用消息泵。你可以做的是调用Application.DoEvents或在另一个线程中执行。