DDEイベント後にウィンドウを前面に表示するにはどうすればよいですか?
質問
DDEイベントで、私のプログラムはファイルをロードし、フォアグラウンドにポップします。 私は使用していた
show;
ウィンドウを非表示にしたときのみ、そのように動作しているようです。
だから追加しました
bringtofront;
これは、非表示、閉じ、最小化、またはアイコントレイにある場合でも機能しましたが、別のウィンドウのすぐ下で開いている場合は機能しませんでした。
次のようなハッキングなものも試しました
windowstate:=wsminimized;
windowstate:=wsnormal;
強制的に表示させようとしますが、役に立ちません。このブロックの両側に印刷物があるため、コードが実行されていることを知っています。そして、それが立ち往生する条件文はありません。
解決
SetForegroundWindow および/またはSetActiveWindow?この件については、 MSDN情報も参照してください。
他のヒント
SetForegroundWindowは常に機能するとは限りません。実際、最近ではアプリケーションがフォーカスを取得することを想定していないため、機能しない可能性があるため、動作することはほとんどありません。 MSは、アプリケーションが入力フォーカスを奪うのを防ぐために年努力してきました。 Raymond Chenのこのブログエントリのコメントを読んでください。いくつかの歴史。
したがって、あなたが自分でフォアグラウンドアプリを使用している場合は、SetForegroundWindowを別のアプリに設定すると、すべてが桃色になります。フォアグラウンドアプリではない場合、可能性が高いのはタスクバーボタンが点滅し始めることだけです。
混乱を追加するために、正確な動作はWindowsのバージョンに依存しているため、実行するWindowsの種類に依存します-長い間これをいじり続けてきました:-)。