• ベストアンサー

Shell関数はOSに依存?

現在VB4からVB6へのコンバージョン作業を行っています。 その際、 VB4→Windows98 VB6→Windows2000XP と、異なるOSを使用しています。 VB6の環境では、Shell関数を使用してMS-DOS バッチ ファイルの起動を行えるのですが、VB4の環境では同じコーディングでもバッチファイルが起動しない&エラーが出力されませんでした。 現在はVB4の環境をWindows95へ移す事で問題を回避したのですが (VB4の環境は比較テストに使用するだけでしたので) 98だから使えないと言うのも気持ちが悪く、質問させていただきました。 どなたかShell関数の上記点への対応策等ご存知でしたらご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>98だから使えない 98じゃなかったけど、似たような現象に陥ったことがあります。 参考までに、そのときは ChDir ChDrive を駆使してカレントパスをバッチのパスにしてあげて、バッチをキックしたら、うまくいきました。

orangetamago
質問者

お礼

ご解答ありがとうございます。 今はもう試してみる環境が無い・・・というか契約期間が終わってしまったので試せないのが残念ですが^^; 次回同状況になった時に参考にさせて頂きます。 ありがとうございました^^

その他の回答 (1)

  • siokara
  • ベストアンサー率41% (7/17)
回答No.2

Shell関数でつまずいたこととして、引数の長さ(byte)制限があったかと思われます。 98で動作せず95で動作するということは、これは当てはまらないと思いますが、よく引っかかるかと・

orangetamago
質問者

お礼

ご解答ありがとうございます 引数の長さはパス指定の文字列の長さと考えてよろしいのでしょうか? だとすれば、ローカルドライブの直下にバッチファイルを入れていたので問題ないと思うのですが・・・ しかし今までパスの文字数で~という考え自体なかったので勉強になりました。ありがとうございます^^

関連するQ&A

  • shell関数について

    毎度、お世話になっています。 現在、C言語で書いた複数のプログラムをBATファイルで処理するように記述しています。VBでその制御を行っているのですが、VBの処理手順として子フォーム(textあり)にデータを書きこんで、ボタンを押すとshellでbatファイルを起動し、バッチファイルの結果として、あるディレクトリにresult.txtが作成され、VBで他の子フォームに読みとらせようとしているのですが、shellだと、実行の終了を待たずに次にいってしまうので、そのバッチファイルの実行処理が終わらず、result.txtの内容を読み込むことができません。 待つようにするにはどうすればよいのでしょうか? ちなみにVBは一週間前にはじめて、自分でも調べてなんとか作ろうとしたのですが、時間がないため、ここに質問させていただきました。なるべく簡単なアルゴリズムで、よろしくお願いします。 VBのプロセス    テキストにデータを書き込む      ↓     ボタン   →        テキストの内容を*.txtとして保存                        ↓                      バッチファイル起動    ↓(ここで右の実行を待たない     ↓     ので読み込むことができない)   C言語で書かれたプログラム実行                        ↓ result.txtを    ←        結果としてresult.txtが出来上がる 読み込んで表示     

  • Shell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

    はじめまして。 掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。 その後、そのバッチファイルが終了してログファイルの出力を完了した後に、 ファイルを開いて確認したいのです。 thread.sleepなどで大体このくらいかなという時間を待ってみる、 などのやり方しか今は思いつかないのですが、 何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。 どなたかご存知の方がいらっしゃいましたらご教授ください。

  • Shell関数で起動したメディアプレーヤーを終了したい。

    以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました) 今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。 Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus") 宜しくお願いします。

  • エクセルVBAで使うShell関数について

    現在、初心者ながらもエクセルを使って動画や音楽を検索して再生するソフトを作っています。 指定したファイルを、指定したアプリケーションで起動して開きたいと思い、ネットを使って調べたら2つの異なるShellの書き方で動かす方法が見つかりました。 2つのShell関数は同じものなのか教えて下さい。 (1) ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) と、言う Shell(アプリケーションのフルパス/ADD""ファイルのフルパス) と書いてファイルをアプリケーションで開く方法。 (2) Call Shell(Path & oFile, vbNormalFocus) と、言う Shell(アプリケーションのフルパス, 起動時のウィンドウの状態) と書いてアプリケーションを起動する方法。 この2つは同じ種類のShell関数なのでしょうか。 (1)は、ファイルも一種のアプリケーションとして扱われているんでしょうか。 (2)がShell関数の基本型のようですが、(1)のような書き方が見つかってからは、他にも違う書き方があるかと思うと気になって仕方無いです。 使い方の違いは分かったのですが、調べても(2)の使い方や、別の関数や言語、APIを使ったアプリケーションの書き方しか見つからず、 エクセル2007VBのヘルプを見ても(2)の使い方しか見つからず、 Googleで、「エクセル Shell関数」と調べても、2つの違いが書かれている所が見つからなかったので質問しました。 ※この2つと違う、アプリケーションを起動するShellの記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

  • ShellでEXCEL2002を起動する場合

    VB6のコーディングで、Shell関数を使用してEXCELを起動しているのですが、EXCEL2002では、他のバージョンと表示方法が変わってしまいました。 コーディングは Shell(PATHつきのEXCEL.EXE, vbMinimizedFocus) としているのですが、 EXCEL2000までは、正常にアイコン化されたEXCELが起動できていたのに、EXCEL2002からは最後に使用した大きさ(最大化した状態でEXCEL2002を終了していたら最大化、アイコン化した状態で終了していたらアイコン化)で起動されてしまいます。 また、EXCEL2000までは表示されなかったロゴマーク?も表示されてしまいます。 ちなみにWORD2002はアイコン化して起動可能でした。 (但し、こちらもロゴマークは表示されます。) 動作として、ひっそりとEXCELを起動してマクロを使用した帳票を出力する。 としたいのですが、なにかいい方法がありましたら教えてください。 (ShellExeCuteもうまく動作しませんでした。)

  • Visula Basic6.0からUNIXサーバーのシェルの起動について

    VB6.0からUNIX上のshellを起動したいのですが、良い方法を教えて下さい。 WindowsNT/2000では、以下の方法を考えていますが、Win98ではRSHコマンドが使用できないため困っています。 WindowsNT/2000 shell関数でPC上のバッチファイルを起動。 バッチファイルからRSHコマンドを使用しUNIXのshellを起動。

  • Access Shell関数について質問です。

    Access Shell関数について質問です。 AccessVBA でボタンをクリック時に画像を表示させたいと考えています。 クリック時にデフォルトの画像ソフトを起動させて表示しようと思っています。 たしか、Shell関数を使用すれば使えたと思うのですが、 パラメーターの入れ方を忘れてしまいました。 指定アプリケーションは使用環境によって違う為、出来ればデフォルトで 各環境のデフォルト設定の写真ビューワーを呼び出したいと考えています。 私の記憶が間違っているかもしれないので、Shell関数以外も含めて、 どなたかご存知の方アドバイスよろしくお願いいたします。

  • VB6.0 + Windows 2003環境下でのShell関数の使用

    現在、VB6.0を利用してプログラムを作成しています。 プログラム中からShell関数を利用してexeファイルを起動しようとしているのですが、exeファイルが起動しません。 実行環境OSがWindowsXPの場合は正常に起動するのですが、Windows2003で同じように実行したさい、exeファイルが起動しないのです。 イベントビューアのアプリケーションログを調べたところ、VBRuntimeエラーが発生していました。 エラー内容は、「実行時エラー'91'オブジェクト変数または With ブロック変数が設定されていません。」です。 VBRuntimeのバージョンは6.0.97.82です。 何か原因・解決策が分かる方いましたら ご協力お願いします。

  • Shell関数でのExcel起動において

    Shell関数でExcelを起動させた時に、Excelのブックを閉じた時に一緒にExcelアプリケーションも終了させたいのですが、create object関数なら可能なのですが、環境上Shell関数を使うしかなくて、何か方法はありますか?

  • Shell関数実行直後の問題

    Eexcl2003 VBにて、Shell関数を実行しました。 Shell関数によるトラブルは無いのですが、 Shell関数実行指示後の構文で、 Left/Mid/Right/Date/Timeの構文部が実行時エラーになります。 対象Eexclファイルを閉じ、再度開き、Shell関数部分を削除して、 マクロを実行すると、上記関数は正常に作動します。 解決策が想い浮かばないので、先達たちに教えを乞います。 宜しくお願いします。