1

user32 SendMessage dllコマンドを使用して、Windowsアプリケーションにコマンドを送信しています。

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

これらのコマンドの1つにより、アプリケーションは入力を受け入れるモーダルボックスを表示します。

私の質問は、他のアプリケーションのモーダルボックスが閉じられるまで、アプリケーションのコード実行が停止するのはなぜですか?

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 に答える