2012-01-21 19 views
1

私はC#Windows FormsプログラムをWindows 7に持っていますが、どのWindowsプログラムにも当てはまると思います。タスクバー/スタートメニューが表示されている最上部のフォーム/ウィンドウにウィンドウメッセージが送信されましたか?

私のプログラムのメインフォームは、画面全体をカバーし、Topmostプロパティが設定されています。しかし、StartキーをクリックしてStartメニューを開くと、Always on Topフォームの上にタスクバーとStart Menuが表示されます。

この問題が発生していないし、私のフォーム/ウィンドウはもはや最上位のウィンドウ(またはZオーダーの一番上)であるとき、私のフォーム/ウィンドウに送信されたウィンドウメッセージ(WM_)はありますか?私はWndProcを使用してそれをキャッチしたいと思います。

は、私はレイモンドチェンを消費するのが賢明だと思うあなた

+0

情報をキャッチするときにはどうしますか?タスクバーを停止してスタートメニューを表示したいのですか、それとも知る必要がありますか? –

+0

BringToFrontを使用してウィンドウを前面に持ってきたい。私が今やっているやり方は、BringToFrontを呼び出すために100ミリ秒ごとにタイマーを使用していますが、私はリソースを無駄にしていて、おそらくコンピュータの速度を落としています。 – AnAurelian

+0

ユーザーがスタートメニューを使用できないようにしていませんか?そして、それはタスクバーとスタートメニューを見てフリックして隠されて恐ろしいように見える必要があります。このすべての目的は何ですか? –

答えて

2

をありがとう彼のblog postとそれだけで楽しい話のように感じているものの、非常に、非常に深刻なそれを取ります。

引用:「二つのプログラム 『公爵それを』このような、あなたは1が勝つかを予測することはできませんが、あなたが失うことになる100%の確信を持って予測することができます。ユーザー」

+0

このブログ記事を共有していただき、ありがとうございました。アドバイスを心がけています。 – AnAurelian

1

として、 reneは上記の投稿によると、1つ以上のアプリケーションが同じロジックを使用する場合は競合状態になりますが、それでもやりたい場合はForm.Deactivatedが良いスタートになると思います。

関連する問題