
統合アーカイバプロジェクトのdllを使用した解凍ツールを作ろうと思っているのですが、dllを遅延バインディングする方法はあるのでしょうか?
現在は全てのdllの、全ての関数に対してDeclare節を使用しているのですが、これでは統合アーカイバプロジェクトの仕様を全く役立てられていないということになります。
○Library系のAPIで得られる関数へのポインタはVBで利用することは原則的に不可能
○rundllは返り値を取れないため不適切
○VB.netでは遅延バインディングを行うことができる
という程度のことは調べることができましたが、VB6での遅延バインディングを実現する方法については見つけることができませんでした。
どなたかご存知の方よろしくご教授願います。
No.2ベストアンサー
- 回答日時:
>>exeの起動時にDLLが無いからといって~
>は検証済みです、ご指摘ありがとうございます。
>これをレイトバインディングというのですね。
普通は言いません。
レイトバインディング、アーリーバインディングはActiveXでの型の解決方法を指します。
>これを回して、1回目で
>Declare Function UnlhaGetVersion% Lib "Unlha32" ()を、2回目で
>Declare Function UnzipGetVersion% Lib "Unzip32"
()
>をそれぞれロードする、というようにDeclare節の定義を簡略化させたいのです。
言語使用としてDeclareステートメントを使用する限り絶対に不可能です。
#まぁ、9x系でしたらLoadLibraryとGetProcAddress、できないことも無いんですが、おすすめしません。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/#mu …
あとは、UNLHA32.DLLとかとVBの間に1つC++等で作った特殊なDLLをかますとかですね。
http://www.koalanet.ne.jp/~akiya/vbtaste/dll/
回答ありがとうございます、とても勉強になりました。
「言語仕様として不可能」ということを聞けただけで、充分にこの質問を立てた意味があります。
また、参考URLまで調べていただき、感謝の限りです。
C++で橋渡しのDLLを作るのが解決策ですね、勉強を兼ねてそれを作ってみることにします。
No.1
- 回答日時:
>現在は全てのdllの、全ての関数に対してDeclare節を使用しているのですが、これでは統合アーカイバプロジェクトの仕様を全く役立てられていないということになります。
Declareステートメントは、該当のDLLの関数が初めて呼び出されるタイミングでDLLがロードされます。
よって、遅延ロードです。
exeの起動時にDLLが無いからといってエラーにはなりません。
この回答への補足
回答ありがとうございます。
質問が悪かったようで申し訳ございません。
あと、遅延バインディングの使い方も間違っていたですか、申し訳ないです。
ご説明の
>exeの起動時にDLLが無いからといって~
は検証済みです、ご指摘ありがとうございます。
これをレイトバインディングというのですね。
For I = 1 To 2
Me("Command" & I).Caption = "hogehoge"
Next I
のような感じで
[archivername][funcname]をDeclare節で定義したいのです。
Join(strArcType,",") = "Unlha,Unzip" となる配列変数があり、
For I = 0 To UBound(strArcType)
Declare Function strArcType(I) & "GetVersion%" _
Lib strArcType(I) & "32" () As Long
Next I
これを回して、1回目で
Declare Function UnlhaGetVersion% Lib "Unlha32" ()を、2回目で
Declare Function UnzipGetVersion% Lib "Unzip32"
()
をそれぞれロードする、というようにDeclare節の定義を簡略化させたいのです。
Susie Plug-Inのような感じでdllがあれば対応形式が増える、というものを目指しているのですが、こういった処理をすることはできるのでしょうか、という質問でした。
質問する側の不備、まことに申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- ルーター・ネットワーク機器 家庭のWi-Fiについて 最近家で使っているWi-Fiが頻繁に遅延、切断され困っています。 状況とし 9 2023/02/23 21:08
- デスクトップパソコン 通話が遅延します 1 2023/06/18 02:36
- 電子マネー・電子決済 メルペイの「延滞事務手数料」「遅延損害金」を払わずに済む方法はありますか? 3 2023/03/13 18:48
- その他(悩み相談・人生相談) 私は境界線知能かもしれません 3 2023/05/12 19:17
- 病院・検査 「胎児機能不全」と「子宮内胎児発育遅延」はまた別の疾患ですか? 点数本のハイリスク妊娠管理加算、ハイ 1 2022/10/19 23:16
- 借金・自己破産・債務整理 金銭消費貸借契約、延滞損害金の計算方法について教えて下さい。 6 2023/08/28 09:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Spybotをアンインストールして...
-
VBで作成したdllをAccessで使用
-
Word 2003でハイパーリンクが不調
-
ptipi.dll に関し未解決問題
-
心配です。mfc70.dllの脆弱性
-
パソリからIDをVB6で読み込みた...
-
アニメーションカーソルへの変更
-
メイクファイルからdllを生成す...
-
python エラー
-
templateクラスの宣言と定義を...
-
DOSコマンドよりMFCアプリ起動...
-
GNUは、初心者で質問させて頂き...
-
C++のエラーの内容について
-
Visual C++ ヘッダー情報の反映
-
Eclipseで画像のようなエラー
-
ターボCのライブラリ追加方法
-
math.h
-
eclipseでプログラムが実行でき...
-
LinuxC++ファイルWindowsでのmake
-
” OS ビルド ” の意味が分か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
user32.dllがないためアプリが...
-
visual studioの不要なDll削除方法
-
ASP.NETのDLL入れ替えについて
-
VB6.0(SP6)にて開発を行なって...
-
VBAエディタのコード画面で、カ...
-
VBにてIMEの入力モードを変える...
-
res://ieframe.dll/について
-
C# DLL エントリ ポイントが...
-
ファイルをvbaで圧縮したいので...
-
M365にアップデートしてからコ...
-
自作のDLLがみつからない
-
VBからIMEパッドを呼び出す方法...
-
vb6で作成した画面が処理に時間...
-
*.exeと異なるフォルダのDLLを...
-
MSFlexGridコントロールのエラ...
-
スタートメニューの「ファイル...
-
指定された引数が有効範囲にな...
-
プロシージャエントリポイント ...
-
VC++6.0 でのライブラリ参照方法
-
WIN10で常にフォームを手前に
おすすめ情報