2009-04-26 13 views
3

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

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

システムは、システムのフォーカスを奪う必要があるときに、すでに復元、最小化、または「トレイに最小化」されている可能性があります。だから、それが最小化され、ウィンドウを復元している間にフォーカスを盗むことは容認できません。

+0

皮肉なことの年後、私は思ったんだけど。私はこれを行うアプリが嫌いです。 –

答えて

6

あなたがSOMのP /呼び出すをやって気にしない場合は、SetForegroundWindow機能はあなたを助けることができる必要があります:世界で私はこれをやってみたかった理由
http://pinvoke.net/default.aspx/user32/SetForegroundWindow.html

+0

また、SetForegroundWindowドキュメントの解説を読む価値があります。http://msdn.microsoft.com/en-us/library/ms633539(VS.85).aspx Windowsによっては、背景ウィンドウが他のウィンドウ。 –

関連する問題