別のアプリケーションにキーを送信する方法: 拡張ガイド
他のアプリケーションへのキーの送信は、自動化の基本的な側面です。提供されたコードはこれを実行しようとしますが、いくつかの課題に直面します。
問題:
元のコードは、キーを適切にアクティブ化しないため、メモ帳にキーを送信できません。応用。前景ウィンドウの設定は、目的のプログラムでキーストロークを受信するために重要です。
解決策:
メモ帳にキーを正常に送信するには、コードでまず次のことを確認する必要があります。アプリケーションはアクティブです。これは、ターゲット プロセスの MainWindowHandle で SetForegroundWindow 関数を使用して実現できます。以下の拡張コードは、これを示しています。
// import SetForegroundWindow [DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); private void SendKey() { Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if (p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); } }
バックグラウンド送信:
最初にアプリケーションをアクティブ化せずに、バックグラウンド アプリケーションにキーを送信することはできません。提供されたコードは、バックグラウンド プロセスへのキーの送信をサポートしていません。メモ帳がアクティブでない場合、キーストロークは失われます。
管理者以外のアプリケーション:
メモ帳が管理者として実行されており、送信アプリケーションが管理者として実行されていない場合は、コードが失敗する可能性があります。これは、昇格されたプロセスでは、昇格されていないアプリケーションへのアクセスが制限されているためです。この問題を解決するには、送信アプリケーションも管理者として実行する必要があります。
以上がキーボード入力を別のアプリケーションに確実に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。