1

我正在使用 user32 SendMessage dll 命令将命令传输到 Windows 应用程序。

[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

其中一个命令使应用程序显示一个接受输入的模式框。

我的问题是:为什么我的应用程序的代码执行会停止,直到另一个应用程序的模式框被关闭?

有没有办法继续执行我的应用程序代码,而不会受到使用 user32.dll 发送消息时引起的暂停的干扰?

4

2 回答 2

4

SendMessage 将阻塞,直到呼叫的接收者完成对消息的处理。

您可以改为使用 PostMessage ,这将允许您的程序在发送消息后立即继续执行。

于 2012-08-15T08:59:30.377 回答
1

您可以在此处阅读有关线程的信息

这是一个简单的例子:

using System.Threading;

public static void DoSendMessage() 
{
    SendMessage(...); 
}

public void RunSendMessage()
{
  ThreadStart threadDelegate = new ThreadStart(DoSendMessage);
  Thread newThread = new Thread(threadDelegate);
  newThread.Start();
}
于 2012-08-15T09:00:56.997 回答