2012-02-03 8 views
2

簡単な質問に対する答えのために、より良い部分を探してみました。私は私のC#アプリケーションがタイマーに別のwinformをポップアップして、それが遅れた後で閉じるようにしたい。十分に簡単で、完了し、完了しました。今私の問題は、フルスクリーンでない限り、他のアプリケーションの上に実際に置いてほしいということです。これは、ゲームのような真のフルスクリーンアプリケーションを意味します。私はそのようなアプリケーションに干渉したくないので、私のアプリケーションよりも優先すべきです。OnTopではあるが、フルスクリーンアプリケーションのOnTopではない方法

問題は、私がポップアップフォームで 'OnTop'プロパティを使用していることです。他のアプリケーションでも完全に動作しますが、フルスクリーンゲームとフォームを再生している間にテストしています。 ) "は、フルスクリーンアプリケーションを取り出し、ウィンドウモードにします。

これは、フルスクリーンアプリケーションでの 'OnTop'プロパティの意図した効果ですか?もしそうなら、通常のウィンドウウィンドウの上にフォームポップアップを持ち、フルスクリーンアプリケーションを妨げない方法がありますか?

リンク、例、一般的な方向のキックは素晴らしいです。全画面を含むwinformを検索するときに遭遇する唯一のヒットは、アプリケーションをフルスクリーンにしたり、アプリケーションが別のアプリケーションからフォーカスを外したりしようとしていることです。

ありがとうございます。

(私は「formX:ショー()」である簡単なWinフォームであることにより、それに任意のコードを投稿していなかった「岩下」プロパティが設定されたタイマーの)


(EDIT)正しいトラックに私を置いてくれたawilson53のおかげで、アプリケーションがフルスクリーンであるかどうかを判断する方法が見つけられました。ちょっとシンプルに見えますが、結局のところ答えは「うーん」と言われています。クレジットの

95%が記事の著者に行く:http://www.richard-banks.org/2007/09/how-to-detect-if-another-application-is.html

〜5%が右のトラックに私を取得するためawilson53に進みます。 :)

+0

ここでは簡単な方法はわかりません。しかし、開いているすべてのアプリケーションを繰り返し処理し、ウィンドウの状態を確認する方法があるかもしれません。その後、あなたのための "Zレベル"のポップアップを決定します。 –

+0

フォーカスを盗まずにウィンドウを表示すると役立ちます。 http://stackoverflow.com/questions/156046/show-a-form-without-stealing-focus – Josh

+0

Windowsは、フォームを「ほとんど」「OnTop」にすることはできません。別のプログラムの設定が同じ場合はどうなりますか? – LarsTech

答えて

4

EnumWindows関数のthisラッパーを確認してください。これにより、開いているすべてのウィンドウを列挙し、ウィンドウの状態を判断できます。 EnumWindowItem.Maximizedプロパティをチェックし、Trueの場合はOnTopプロパティをfalseに設定します。 EnumWindowItemの戻り値が最大化されていない場合は、OnTopをtrueに設定できます。

+0

そして、あなたが望むならば、フルスクリーンのウィンドウが実際にあれば、SetWindowPos API関数を使ってポップアップウィンドウをフルスクリーンのウィンドウの下のzオーダーのトップに設定することができます。 –

+0

アイデアありがとう。成功したクラスを実装し、ウィンドウが最大化されているかどうかを返します。私が必要としたのは、アプリケーションがフルスクリーンで、最大化されたウィンドウではないかどうかを判断することでした。しかし、私は正しい方法で私を得ることができました。なぜなら、dllインポート以外の方法があるとは思わないからです。あなたが私を正しい考えの軌道に乗せるために見つけた答えのために私のオリジナルのポストを見てください。ありがとう! – teek5449

+0

私は急いで入力していたフルスクリーンと最大化の間にあなたが作った区別を逃したが、私はまだ自分自身にもかかわらず助けてうれしい! –

関連する問題