バックグラウンド アプリケーションへのキーの送信
提供されたコードは、「k」キーをメモ帳に送信しようとしますが、問題が発生します。これを解決するには、コードのいくつかの側面に対処する必要があります。
正しいプロセス処理:
コードは、メモ帳がすでに実行されていることを前提としています。これを正確に処理するには、
Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
を使用して最初の Notepad プロセスを取得する必要があります。Notepad が現在実行されていない場合は、次を使用して開始できます:
Process p = Process.Start("notepad.exe");
Bring Notepad前景へ:
メモ帳プロセスを作成したら、そのメイン ウィンドウをフォアグラウンド:
IntPtr h = p.MainWindowHandle; SetForegroundWindow(h);
入力の安定を待機中:
キーを送信する前に、アプリケーションが入力ループを安定させるのを待つ必要があります:
p.WaitForInputIdle();
キーを送信:
最後に、必要なキーを送信できます:
SendKeys.SendWait("k");
管理者権限に関する考えられる問題:
メモ帳が管理者として実行されており、アプリケーションが管理者として実行されていない場合は、注意が必要です。この方法は機能しない可能性があります。
修正済みコード:
必要な修正を組み込んだ変更されたコードは次のとおりです:
[DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if (p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); } else { p = Process.Start("notepad.exe"); p.WaitForInputIdle(); IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); }
以上がメモ帳などのバックグラウンド アプリケーションにキーを確実に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。