重複の可能性:
C# を使用して別のプログラムからメッセージ ボックスを閉じる
私のコンピューターには、時々メッセージ ボックスを表示する別のプログラムがあります。これらのダイアログがポップアップしたときに、.NET を使用してこれらのダイアログを閉じることはできますか?
重複の可能性:
C# を使用して別のプログラムからメッセージ ボックスを閉じる
私のコンピューターには、時々メッセージ ボックスを表示する別のプログラムがあります。これらのダイアログがポップアップしたときに、.NET を使用してこれらのダイアログを閉じることはできますか?
ここのような FindWindow と SendMessage winapi 関数を使用しますhttp://www.codeproject.com/Articles/22257/Find-and-Close-the-Window-using-Win-API
while (true) など、そのウィンドウを閉じる連続ループを作成する必要があります。より効率的であるため、タイマーを使用しました。これが私のコードです:
[DllImport ("user32.dll")] public static extern IntPtr FindWindow (String sClassName, String sAppName);
[DllImport ("user32.dll")] public static extern int SendMessage (IntPtr hWnd, uint Msg, int wParam, int lParam);
Timer t;
public Form1 ()
{
InitializeComponent ();
t=new Timer ();
t.Interval=100;
t.Tick+=delegate
{
IntPtr w=FindWindow (null, "Message box title");
if (w!=null) SendMessage (w, 0x0112, 0xF060, 0);
};
t.Start ();
}
ここで、WM_SYSCOMMAND=0x0112 public const int SC_CLOSE = 0xF060;
ウィンドウのクラス名がわからない場合 (上記のように)、null とメッセージ ボックスのタイトルをパラメーターとして使用します。もちろん、これはメッセージ ボックスにタイトルがあることを意味します。