ランタイムを入れずにEXEファイルを動かすには?

解決


ごんべぇ  2003-05-21 15:06:14  No: 107215  IP: [192.*.*.*]

VB6で作ったソフトをVB6ランタイムが入っていないPCで動かしたいのですが、エラーが出て動きません。
これを解消するために、ディストリビューションウィザードでsetup.exeを作ったのですが、初心者の私の作った怪しいソフトをインストールするのはまずいと言われてしまいました。
仕方なく、ウィザードで自動的に作られたSupportフォルダの中のDLLファイルをexeファイルと同じフォルダに移してみたのですがうまくいきません。
安全に(最低限)ソフトを動かす環境を作るにはどうすればいいのでしょうか?

更に、途中でエラー終了したためプロセスをつかんだままになってしまったそうです。こうならないような対処法がありましたら、あわせてご教授くださるとありがたいです。
よろしくお願いします。

編集 削除
oku  URL  2003-05-21 21:14:03  No: 107216  IP: [192.*.*.*]

どんなActiveXを使っているか解りませんが、
自分は極力APIを使うようにしてます。
コンポーネントの追加は、全く使ってません。
これならWin98以上なら、ほぼOKなんで。
もちろんAPIもOSによっては持って無い物もありますが。

編集 削除
たかみちえ  URL  2003-05-21 23:15:52  No: 107217  IP: [192.*.*.*]

VB製ソフトは、それだけでVBランタイムを必要とします。
  ランタイムはインストールされていることを前提とするか、
それともインストーラでインストールするか、
インストール用に別のプロジェクトでも作るか、
インストーラをダウンロードできるサイトにリンクをはるか、
それくらいしかないでしょう。
  VBランタイムは、"同じバージョンのものなら"共有できますから、
他の(同じSPの入ったVB6で作られた)ソフトでインストールされていれば、ランタイムは不要です。

  どうしてもランタイムを使いたくないというのならば、
VBの使用すらも検討したほうがいい…  ということになってしまいます。

  あと、OCXは使わなければいいです。おくさんの言うとおり、
APIですますなどの方法をとるといいでしょう。
  どのOCXも、ほとんどはひとつ、あるいは複数のAPIの呼び出しと、それで生成したオブジェクト(コントロールなど)の操作関数の集まりですから、
完全に置き換えることができるはずです。
(ただし決してたやすいものではありませんが)
  極力他のコントロールを組み合わせてごまかすという使い方もできます。
たとえばタブシートは、複数のピクチャーボックスを、コンボボックスを使って切り替えさせればいいですし、
  スライドバーはスクロールバーで置き換えることができます。
(というか、わたしスライドバーなんて、使ったことないんですけど…^^;)

> 更に、途中でエラー終了したためプロセスをつかんだままになってしまったそうです。
  エラー処理は、VBではGotoで飛ばすか、Resumeで無視するかしかないので、
うまくいくかどうかわかりませんけど、
"VBの仕様"で終わってしまいそうな気がしないでもないです(-_-;)
(いや、エラーが起こらずプロセスが残るのなら、対象法がいくらかありそうですけど、エラーがあってプロセスが残ると、
エラー処理云々の部分まで行きますし。VBのエラー処理は置き換えできなかったと思うし)

  ただ、終了時あたりをトレースしてみると、ひょっとしたら何かわかるかもしれない、
ということを付け足しておきます。

編集 削除
ごんべぇ  2003-05-22 11:30:37  No: 107218  IP: [192.*.*.*]

okuさん、たかみちえさん、レスありがとうございます。
複数列表示をするためMSFlexGridを使用していたのですが、それで引っかかっていたんです。
Listboxでも何とか同じようなものが出来たので、そちらを使うことにしました。
親切に教えていただいてすごく感謝してます!
ありがとうございました。

編集 削除