2011-09-15 7 views
1

私はすべての上に表示したいウィンドウを持っています。私のコードは、他の一番上のウィンドウを除いて、ほぼすべてのウィンドウの上に強制的に強制することができます。ここで私が使用したコードは次のとおりです。ウィンドウをタスクマネージャのように既に一番上のウィンドウの上に置くようにします。

SetWindowPos(getSDLWindow(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); 

この行は、私は(私はそれを発射するためにマウスフックを使用しています)マウスの中央ボタンをクリックするたびに実行されます。

私のプログラムを起動し、そのポイントから一度中点をクリックすると、私のウィンドウはすべての「通常の」ウィンドウの上にとどまります。

しかし、すべての「特別なウィンドウ」は、自分のアプリケーションウィンドウと同じカテゴリにあるように見えます。つまり、アプリケーションウィンドウの上にフォーカスが置かれたときに特別なウィンドウが表示されます。この特別なウィンドウのカテゴリには、タスクバー(スタートメニューを使用しているように見えます)、右クリックメニュー(通常のウィンドウで起動していても)、タスクマネージャーなどがあります。実際、私は、「最上位」である他のウィンドウがこのように動作することをかなり確信しています。私のSetWindowPosコールを通して、私はアプリケーションウィンドウのステータスを一番上のウィンドウに上げているようです。

私はタスクマネージャを起動し、アプリケーションウィンドウ上に移動して(タスクマネージャを中に入れて)、タスクマネージャ内をミドルクリックすると、アプリケーションウィンドウが前面にポップアップします(フォーカスはタスクマネージャに残ります)。これはいいですが、私はそれを一歩進めて、私の窓が上になるようにしたいと思っていますに関係なく。

ループ内でSetWindowPosを繰り返し実行する以外の方法はありますか?私は可能な限り避けたいと思います。

+7

しないでください。あなたのユーザーはあなたを嫌うでしょう。 –

+0

さて、大きな看板と、ユーザーがそれをオフにする巨大なチェックボックスがあります...私は何かを把握します。ご存じのように、私は実際にマウスを追跡して、カーソルの途中でアプリケーションウィンドウを移動(およびサイズ変更)しようとします**。重要な情報を表示したいだけです。 –

+0

あなたはポルノ/ギャンブル/弁護士/ウイルスサイトからのポップアップウィンドウがタスクマネージャへのアクセスなしで絶対一番上になる方法が必要ですか?あなたが望むことをする方法を見つけたとしても、M $は「重要なセキュリティ」アップデートを急いですぐにブロックします。 –

答えて

8
+0

くそー、それに私を打つ。私はまったく同じリンクを投稿しようとしていた:) +1。 –

+6

私はこの引用が大好きです:「時々私は急いでいます。私はデリーカウンターで次の人となることを確かめたいのです。その人は気づかずに私の目を覚ましてチケットを盗みます私の計画は定期的に目を覚ますように時計アラームを設定することですそれは私を目覚めさせる、私は最も低い数字を持つ人を見つけ、無意識のうちに彼らをノックして、チケットを盗むより良い方法はありますか? :) –