0

我在 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));
}

提前致谢。

4

1 回答 1

-2

那是因为当您在 MouseClick 函数中时,主线程消息泵被挂起。消息框调用重新启用消息泵。您可以做的是调用 Application.DoEvents 或在另一个线程中执行此操作。

于 2013-01-26T21:27:05.397 回答