画面を持つDLLを表示したままタスクを消すには?

解決


さわ  2003-08-20 00:29:26  No: 4417

DLLの画面をタスクに乗せたくないのですが。
VBで言うShowTaskのような処理はありませんでしょうか?
ちなみにShowWindow(SW_HIDE)でHInstance、Application.Handel
は駄目でした・・・
FormのHandleではタスクは消えるのは良いんですが
画面も消えてしまいます。。


にしの  2003-08-20 00:37:55  No: 4418

タスクに出ているのは、親ウィンドウです。
誰かが、その画面を所有すればよろしいかと。
Parentを設定してみてください。


Halbow  2003-08-20 01:19:03  No: 4419

Halbow です。

DLL  で作られたフォームを表示するとタスクバーに現れるのは、Owner である  DLL の
Application オブジェクトが Window を作らないからです。Exe 側の Application.Handle
を DLL のそれに代入しておくとこれを防ぐことができます。詳しくは

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=058464

で書いています。またコード例は以下にあります。

http://www.sakaki.keiaikai.or.jp/cgi-bin/ConvRoom/webconv.dll/body?No=13396


さわ  2003-08-21 02:01:44  No: 4420

にしのさん、Halbowさん
回答ありがとうございます。
上記サイトの方法で呼出側のApplication.Handle
をDll側でセットする方法で解決できました。
どうやら?パッケージを使用しない場合DLL側のApplicationHandle
は0になってしまっていた様です。
呼出側のExeとDllが両方ともパッケージを使用して
コンパイルされている場合のみ?かは解りませんが
DLLのApplicationHandleが呼出元のExeと同じで
タスク上も一つになったのでとりあえずそちらでの
対応となりました。。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加