VB2008で起動中のdllを知るには


ユーケー  2009-07-10 16:06:29  No: 142199  IP: 192.*.*.*

VB2008で、
ある画面のボタンを押すと、dllが起動して、
別画面が開く使用なのですが、
そのdllが使用中かどうか
ソース上で判別ができるのでしょうか?
よろしくお願いします。

編集 削除
オショウ  2009-07-10 17:28:23  No: 142200  IP: 192.*.*.*

知ってどうする・・・

アンドキュメントな情報ですが、どうしてもなら
頑張って下さい

http://www.securityxploded.com/dllrefcount.php

以上。参考まで・・・

編集 削除
オショウ  2009-07-10 17:40:59  No: 142201  IP: 192.*.*.*

因みにそのDLLって、どんなやつ?
それによっては、取れない場合もあります。

COM型とか、.NETのDLLとか、Win32 DLLとか・・・
要はLoadLibraryでエラーするのは、この方法では無理。

全プロセス空間から、各々のEXEがロードしているDLL情報
を取得して該当するDLLがLoadされているか・・・カウント
しないといけないように思われます。

何にせよ、何で必要?

以上。

編集 削除
ユーケー  2009-07-11 13:26:03  No: 142202  IP: 192.*.*.*

どうもありがとうございます。

DLLは.NETとだと思います。

なぜ必要かといいますと、
親であるメイン画面.exeから
ボタンを押すと子画面のdllを呼び出して表示するのですが、
子画面の表示中は、親画面の×ボタン(閉じるボタン)が
押せないようにしたいと考えてします。

それで、子画面が1つも開いていない時のみ
親画面の×ボタン(閉じるボタン)押せる
動きにしようと思い、
上記の質問をさせていただきました。

編集 削除
オショウ  2009-07-11 17:56:17  No: 142203  IP: 192.*.*.*

そういう方法はナンセンスですネ!

子画面を開く動作は、親が担っているので、子画面用の
オブジェクトがnothingなのかどうかで判断して、閉じる
動作の有効性を確認した方がよいです。

わざわざアンドキュメントな方法を安易に行使するのは
より深い問題やバグを誘引してしまうと思いますが。

※  要はプログラムの組み方が悪い・・・
    もしアンドキュメントにせよ、そういう情報が入手
    できなかった場合、どうするんですか?

以上。

編集 削除
ユーケー  2009-07-14 15:03:24  No: 142204  IP: 192.*.*.*

そういう情報が入手できなかった場合は、
dllが起動しないとみなし閉じるつもりで
考えていました。

教えていただいたやり方で
(子画面用のオブジェクトがnothingなのかどうかで判断して閉じる)
できましたので、それで行きたいと思います。

どうもありがとうございました。

編集 削除