ばぐるばぐるDLL | 今宵は月が高い。注意されたし。

ばぐるばぐるDLL

いや、DLLにTForm入れてるって話なんですけどね。

DLL に TForm を入れるには、DLL 側で初期化のときにApplication.Handle を親ウィンドウにセットしてやれば、以後は Application がきちんとウィンドウ管理してくれます。ま、大体ね。
基本的にはメインフォームを使う形のいつもながらのプログラムや、メインフォームがあるアプリケーションのプラグインとか云うケースでは問題ないんですが…… 今回の困ったケースは非VCLアプリのプラグインでの挙動なんですよ。

その非 VCL アプリをウィンドウハンドルをセットしたらば割とちゃんと動いてるっぽいのですが、そのウィンドウを閉じると Application.Terminete を呼んじゃうのね。そしたらEXE側までも全部終了されてしまわれました orz

OnClose イベントで Action:=caHide もメインフォーム相手には効果なし。
だもんで Application.MainForm がダミーのウィンドウになるように、見えないウィンドウを定義してみたわけ。でも駄目でした。そのフォームは Application から ShowModal されてるらしくて、終了を待たれてしまいます。だもんで初期化部で止まってしまいます。駄目駄目です。はぁ。

打つ手なしですよ……困ったもんだ。