3

主にバックグラウンドで動作するアプリケーションがあります。アプリがフォアグラウンド アプリからフォーカスを奪うように処理する特定のシステム イベントが必要です。しかし、 UIElement.Focus() は WPF アプリ内でのみフォーカスを設定しているようです。つまり、WPF アプリ全体に既にフォーカスがある場合、Focus() はフォーカスを適切なコントロールに設定します。しかし、別のアプリからフォーカスを盗んで自分のアプリに置く必要があります。これどうやってするの?

システム モーダル ダイアログは必要ありません。つまり、ウィンドウがフォーカスを奪った後、ユーザーはアプリのウィンドウを閉じることなく、すぐに別のアプリに切り替えることができるはずです。

システム フォーカスを盗む必要がある場合、アプリは既に復元、最小化、または "トレイに最小化" 状態になっている可能性があります。したがって、ウィンドウが最小化されていると仮定して、ウィンドウの復元中にフォーカスを盗むことは受け入れられません。

4

1 に答える 1

6

いくつかの p/invokes を実行してもかまわない場合は、SetForegroundWindow関数が役立つはずです:
http://pinvoke.net/default.aspx/user32/SetForegroundWindow.html

于 2009-04-26T22:23:40.363 に答える