最前面表示について

解決


ぽぽろん  2006-01-19 17:17:55  No: 19783  IP: 192.*.*.*

始めまして。仕事上必要に迫られてdelphi5Proで開発している初心者です。

最前面関連に関してはここの他にも色々な所で取りざたされているようで、
書いてある事を試してみてはいるのですが、どうしてもうまく行かないので
質問させて頂く事にしました。
(findwindowでハンドル取得して、setforegroundで指定するとか、
setwindowposで指定するとか…T_T)

まず、プログラムの構成ですが、メインフォームから動的に生成した
モーダルフォームのボタンを押すと、自分をHideにしてから外部のexeを
ShellExecuteで呼び出し、起動した画面を終了した時にhideにしていた
フォームをshowで表示しているのですが、どうしても最前面に表示されません。

色々な環境でテストしてみると、W2kだけでこの症状が見られるようです。
他のOSでは最前面になっているような気がするんですが、w2kだと
タスクバーが点滅するだけで、背面にいってしまいます。

何か心当たりがあったり、ご存知の方がいらっしゃったらご教授願えますでしょうか。

宜しくお願い致します。

編集 削除
deldel  2006-01-19 18:04:39  No: 19784  IP: 192.*.*.*

SetForegroundWindow(Handle);
ではダメ?

編集 削除
ん?  2006-01-19 23:10:13  No: 19785  IP: 192.*.*.*

> SetForegroundWindow(Handle);

Win2000からは、それでは動きません。

こちらを参考に・・・というか、コピーして使えばいいはずです。
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/062/062449.html

編集 削除
Fusa  2006-01-19 23:34:48  No: 19786  IP: 192.*.*.*

前に試した事があるのですが

"ん?"さん紹介のコードより
さらに強く前面にもってくるコードがこちらです。

Torry's Delphi Pages
http://www.swissdelphicenter.ch/torry/showcode.php?id=261

編集 削除
ぽぽろん  2006-01-20 11:48:09  No: 19787  IP: 192.*.*.*

皆様、回答ありがとうございます。
お蔭でやっと解決しました〜

どーもどうやってもうまく行かないと思っていたら、
ウィンドウハンドルの取得方法がよくなかったようでした^^;

有難う御座いました。

編集 削除