ホームページ >バックエンド開発 >C++ >.NET のバックグラウンド アプリケーションにキーを送信するにはどうすればよいですか?

.NET のバックグラウンド アプリケーションにキーを送信するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 09:52:35712ブラウズ

How Can I Send Keys to a Background Application in .NET?

バックグラウンド アプリケーションへのキーの送信: 総合ガイド

特定のキー (例: "k") を別のアプリケーションに送信するタスクメモ帳などを使用するには、.NET でのプロセス処理についての深い理解が必要です。この問題とその考えられる解決策を詳しく見てみましょう。

別のアプリケーションにキーを送信するには、アプリケーションがフォアグラウンドにある必要があります。指定されたコードでは、このステップは SetForegroundWindow を使用して試行されています。ただし、実装にはさらなる改良が必要な場合があります。

キーを送信する前にメモ帳が実際にアクティブなウィンドウであることを確認するには、次の手順を実行する必要があります。

  • Process.MainWindowHandle を使用して、次のハンドルを取得します。メモ帳ウィンドウ。
  • このハンドルで SetForegroundWindow を呼び出し、メモ帳を最前面にします

コードの拡張バージョンは次のとおりです。

[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");
}

メモ帳がまだ実行されていない場合は、メモ帳を起動して準備が完了するまで待つ必要があります。 key:

Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");

メモ帳が昇格された特権で起動された場合 (例:管理者) であり、アプリケーションがそうでない場合、SetForegroundWindow 呼び出しが正しく動作しない可能性があります。このような場合は、別の方法を検討するか、アプリケーションの権限をそれに応じて調整してください。

以上が.NET のバックグラウンド アプリケーションにキーを送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。