外部アプリケーションへのキーの送信
メモ帳などの別のアプリケーションに特定のキーを送信しようとすると、プログラマーは、コードが意図したとおりに機能しなくなります。この記事は、コードを調査し、代替ソリューションを提供することで、これらの課題に対処することを目的としています。
提供されたコードには次の問題が含まれています:
これらの問題に対処するには、次のコード変更をお勧めします。
すでに実行中の場合メモ帳:
using System.Diagnostics; ... // Get the first running instance of Notepad Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if (p != null) { // Get the main window handle IntPtr h = p.MainWindowHandle; SafeNativeMethods.SetForegroundWindow(h); SendKeys.SendWait("k"); }
メモ帳の起動とキーの送信:
... // Start Notepad Process p = Process.Start("notepad.exe"); // Wait for the input queue to stabilize p.WaitForInputIdle(); // Get the main window handle IntPtr h = p.MainWindowHandle; SafeNativeMethods.SetForegroundWindow(h); SendKeys.SendWait("k");
これらの変更を実装することで、コードは最初にメモ帳が有効かどうかを検証します。実行中、およびメモ帳を起動する場合は、アプリケーションが完全に初期化されるまで待機してから、 key.
非アクティブ ウィンドウに関する考慮事項:
キーをバックグラウンド アプリケーションに直接送信することはできませんが、ターゲット アプリケーションをバックグラウンド アプリケーションに移動させる方法はあります。フォアグラウンドに移動してからキーを送信します。最初の例で提供されているコードに示すように、SetForegroundWindow 関数によりこの機能が可能になります。
以上がメモ帳などの外部アプリケーションにキーを確実に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。