2009-03-07 16 views
2

DDEイベントでは、プログラムがファイルを読み込んでフォアグラウンドにポップアップするはずです。 私はそれだけで私は、ウィンドウを非表示になっているときにのように動作しているようだDDEイベント後にウィンドウを前面に持っていくにはどうしたらいいですか?

show; 

を使用していました。

だから私は、それが非表示になった場合は、再度、これは働いていた

bringtofront; 

を追加し、それだけで他のウィンドウの下に開いていた場合は、アイコントレイにではなく、または最小化、閉じました。

は私も表示するようにそれを強制しようとする

windowstate:=wsminimized; 
windowstate:=wsnormal; 

ようないくつかのハックのものを試してみましたが、無駄に。私はこのブロックのどちらかの側に印刷物があるので、コードが実行中であることを知っています。そして、それが詰まる可能性のある条件文はありません。

答えて

1

SetForegroundWindowは必ずしも機能しません。実際には、最近はアプリケーションが焦点を当てるべきではないため、動作させることはほとんどありません。 MSは年のを試して、入力フォーカスを盗むアプリケーションを防ぎました。いくつかの歴史のために、この blog entryのコメントをRaymond Chenから読んでください。

あなたはフォアグラウンドアプリケーションであれば、SetForegroundWindowを別のアプリケーションにすることができます。すべてがピーチになります。フォアグラウンドアプリでない場合は、タスクバーボタンが点滅し始める可能性があります。

混乱を加えるだけで、正確な動作はWindowsのバージョンに依存するため、実行しているWindowsの種類に依存します。これは長い間この問題を抱えていました。

+0

DDEイベントを送信するプログラムは、AllowSetForegroundWindowを呼び出して連携する必要があります。私はExplorerがそれをすると期待していますが、おそらく他のプログラムはその細部を無視しています。 –

+0

それも良いことです。私は本当に他のプログラムが焦点を当てて好きではありません。 – Kibbee

関連する問題