2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« 「写真の印刷ウィザード」に送る。 | トップページ | CScript.exe強制実行 »

2007年5月18日 (金)

WScript.ShellのExec()でコンソールアプリを非表示で実行する。その2

再帰呼び出しで一本化する例です。

既存のVBSファイルの先頭に以下のコードを組み込むだけで、
もし、自分がWScript.exeで起動されると、
自身を非表示のCScript.exeで起動し直します。

Option Explicit

Sub HideExec '[ここから]'
Dim Args
Dim Arg
If LCase(Right(WScript.FullName,11))="wscript.exe" Then
  Args=Array("CScript.exe","""" & WScript.ScriptFullName & """")
  For Each Arg In WScript.Arguments
    ReDim Preserve Args(UBound(Args)+1)
    Args(UBound(Args))="""" & Arg & """"
  Next
  WScript.Quit CreateObject("WScript.Shell").Run(Join(Args),7,True)
End If
End Sub
HideExec '[ここまで]'

'以下は既存コードのサンプル

Dim wShell
Dim oExec
Dim Args
Dim Arg
Args=Array("fc.exe")
For Each Arg In WScript.Arguments
  If InStr(Arg," ") Then Arg="""" & Arg & """"
  ReDim Preserve Args(UBound(Args)+1)
  Args(UBound(Args))=Arg
Next
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec(Join(Args))
MsgBox oExec.StdErr.ReadAll() & vbLf & oExec.StdOut.ReadAll(),,Join(Args)

fc.exeの代わりにfc.vbsで試してみてください。

« 「写真の印刷ウィザード」に送る。 | トップページ | CScript.exe強制実行 »