VBScriptから別のexeファイルを実行する方法

解決


のぶこ  2003-01-10 20:18:23  No: 105837

VBScriptの中でC言語で作成した別のexeファイルを実行
させたいのですが、やり方が分かりません。
中で起動させるプログラム(exe)には起動時に引数が必要です。

Cprogram.exe A B C

こんな感じです。

このプログラムの処理が終わってから次の処理に移りたいので
このプログラムの終了したことを感知する必要があるのです。

何卒宜しくお願いします。


Say  2003-01-10 20:36:18  No: 105838

Windows Scripting Host 上で実行しているのなら、
WshShellオブジェクトで実現可能です。


のぶこ  2003-01-10 21:28:47  No: 105839

早速のフォロー有難うございます。
型が一致しません"WshShell"
というエラーが出ます。
VBScriptの実行方法は.vbsという拡張子のファイルを
ダブルクリックして行っています。


Say  2003-01-10 23:28:45  No: 105840

原因はコードをみないことにはわかりませんが・・・。

例えば、コマンドライン引数を取得してテキストボックスに表示する
VBのExe D:\Say\Command\Project1.exe があったとします。
このExeに文字列"ABCDE"をコマンドラインにわたすには、
メモ帳か何かで

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "D:\Say\Command\Project1.exe ABCDE",,True
Set WshShell = Nothing
MsgBox "おわったよん"

というスクリプトを書いて、WshShellTest.vbs とかいう名前で
保存して、保存したファイルをダブルクリックすれば実行されます。
開いたWindowを閉じると、"おわったよん"とダイアログに表示します。

・・・って、この回答、そのまま「Visual Basic 初心者掲示板」の
「コマンドライン引数を渡すには?」の回答に使えるんでないかい?

戻り値がほしいときは、Runメソッドでなく、Execメソッドを使います。
ただし、Execメソッドを使うにはWSHの最新版(Ver5.6)が必要です。

http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D

VBで標準出力させるのは面倒なので、
とりあえず、BorlandC++でサンプル作ってコンパイルしました。

//Cサンプル
#include <stdio.h>

int main(int argc , char *argv[])
{
  int i ;
  char j[10]  ;

  for (i = 1; i < argc; i++){ 
    j[i - 1] = *argv[i] ; 
  }
  j[i + 1] = 0 ; 
  printf("%s\n",j);
  return 0 ;
}

コマンドライン引数をくっつけて、標準出力に吐くだけですね。
これをコンパイルして、D:\Say\CWORK\BCCWORK\cmdparam\cmdparam.exe に置きました。
これに、 1   2   3   という引数渡すスクリプトを書いてみます。
出力は   123   になるはずです。

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objExec  = WshShell.Exec("D:\Say\CWORK\BCCWORK\cmdparam\cmdparam.exe 1 2 3")
Do While objExec.Status = 0
     WScript.Sleep 100
Loop
MsgBox objExec.StdOut.Read(3)
Set objExec  = Nothing
Set WshShell = Nothing

というスクリプトを書いて、WshShellTest2.vbs とかいう名前で
保存して、保存したファイルをダブルクリックすれば実行され、
"123"とダイアログに表示します。


のぶこ  2003-01-10 23:47:22  No: 105841

出来ました!
バッチリです。
Sayさん本当に有難う御座いました。
感謝!感謝!


say  2003-01-17 21:06:49  No: 105842

解決時にはちゃんとチェックしておきましょう。


Say  2003-01-17 22:01:47  No: 105843

どなたか知りませんが、「騙り」は禁止行為です。  ↑


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加