VB6で作ったソフトをVB6ランタイムが入っていないPCで動かしたいのですが、エラーが出て動きません。
これを解消するために、ディストリビューションウィザードでsetup.exeを作ったのですが、初心者の私の作った怪しいソフトをインストールするのはまずいと言われてしまいました。
仕方なく、ウィザードで自動的に作られたSupportフォルダの中のDLLファイルをexeファイルと同じフォルダに移してみたのですがうまくいきません。
安全に(最低限)ソフトを動かす環境を作るにはどうすればいいのでしょうか?
更に、途中でエラー終了したためプロセスをつかんだままになってしまったそうです。こうならないような対処法がありましたら、あわせてご教授くださるとありがたいです。
よろしくお願いします。
どんなActiveXを使っているか解りませんが、
自分は極力APIを使うようにしてます。
コンポーネントの追加は、全く使ってません。
これならWin98以上なら、ほぼOKなんで。
もちろんAPIもOSによっては持って無い物もありますが。
VB製ソフトは、それだけでVBランタイムを必要とします。
ランタイムはインストールされていることを前提とするか、
それともインストーラでインストールするか、
インストール用に別のプロジェクトでも作るか、
インストーラをダウンロードできるサイトにリンクをはるか、
それくらいしかないでしょう。
VBランタイムは、"同じバージョンのものなら"共有できますから、
他の(同じSPの入ったVB6で作られた)ソフトでインストールされていれば、ランタイムは不要です。
どうしてもランタイムを使いたくないというのならば、
VBの使用すらも検討したほうがいい… ということになってしまいます。
あと、OCXは使わなければいいです。おくさんの言うとおり、
APIですますなどの方法をとるといいでしょう。
どのOCXも、ほとんどはひとつ、あるいは複数のAPIの呼び出しと、それで生成したオブジェクト(コントロールなど)の操作関数の集まりですから、
完全に置き換えることができるはずです。
(ただし決してたやすいものではありませんが)
極力他のコントロールを組み合わせてごまかすという使い方もできます。
たとえばタブシートは、複数のピクチャーボックスを、コンボボックスを使って切り替えさせればいいですし、
スライドバーはスクロールバーで置き換えることができます。
(というか、わたしスライドバーなんて、使ったことないんですけど…^^;)
> 更に、途中でエラー終了したためプロセスをつかんだままになってしまったそうです。
エラー処理は、VBではGotoで飛ばすか、Resumeで無視するかしかないので、
うまくいくかどうかわかりませんけど、
"VBの仕様"で終わってしまいそうな気がしないでもないです(-_-;)
(いや、エラーが起こらずプロセスが残るのなら、対象法がいくらかありそうですけど、エラーがあってプロセスが残ると、
エラー処理云々の部分まで行きますし。VBのエラー処理は置き換えできなかったと思うし)
ただ、終了時あたりをトレースしてみると、ひょっとしたら何かわかるかもしれない、
ということを付け足しておきます。
okuさん、たかみちえさん、レスありがとうございます。
複数列表示をするためMSFlexGridを使用していたのですが、それで引っかかっていたんです。
Listboxでも何とか同じようなものが出来たので、そちらを使うことにしました。
親切に教えていただいてすごく感謝してます!
ありがとうございました。
ツイート | ![]() |