2

DDE イベントで、私のプログラムはファイルをロードし、フォアグラウンドにポップする必要があります。使っていた

show;

ウィンドウを非表示にしたときだけ、そのように機能しているようです。

だから私は追加しました

bringtofront;

繰り返しますが、これは、非表示、閉じている、最小化されている、またはアイコントレイにある場合は機能しますが、別のウィンドウのすぐ下で開いている場合は機能しません.

私もいくつかのハッキーなものを試しました

windowstate:=wsminimized;
windowstate:=wsnormal;

強制的に表示しようとしますが、役に立ちません。このブロックの両側に出力があり、スタックする可能性のある条件ステートメントがないため、コードが実行されていることがわかります。

4

2 に答える 2

2

SetForegroundWindowや SetActiveWindowを試しましたか? この件に関するMSDN 情報も参照してください。

于 2009-03-07T12:15:19.227 に答える
1

SetForegroundWindow は常に機能するとは限りません。実際、最近では、アプリケーションがフォーカスを取得することは想定されておらず、フォーカスを与えることしかできないため、うまくいく可能性はほとんどありません。MS は、アプリケーションが入力フォーカスを盗むのを防ぐために何年も努力してきました。歴史については、Raymond Chen によるこのブログ エントリのコメントをお読みください。

そのため、自分がフォアグラウンド アプリである場合は、SetForegroundWindow を別のアプリに設定すると、すべてが桃色になります。フォアグラウンド アプリでない場合、発生する可能性が高いのは、タスク バー ボタンが点滅し始めることだけです。

混乱を招くだけですが、正確な動作はWindowsのバージョンに依存するため、実行しているWindowsの種類によって何が起こるかが異なります.彼らはこれを長い間いじっていました:-)。

于 2009-03-07T16:14:57.263 に答える