WScript.ShellのExec()で、コンソールアプリを非表示で実行するラッパー(その2)
このラッパーをWScript.ShellのExec()で使うには、
Set oExec=wShell.Exec("コンソールアプリ [引数...]")
の代わりに、
Set oExec=wShell.Exec("WScript.exe ""フルパス\HideExec.VBS"" コンソールアプリ [引数...]")
(もし入力があれば、oExec.Writeなど)
oExec.StdIn.Close
とします。
使用例(1)
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("WScript.exe HideExec.VBS more")
oExec.StdIn.WriteLine "aaa"
oExec.StdIn.WriteLine "bbb"
oExec.StdIn.Close
MsgBox oExec.StdOut.ReadAll,,"StdOut"
MsgBox oExec.StdErr.ReadAll,,"StdErr"
入力は最初にまとめて与えます。ラッパーの都合で、会話的にはできません。
使用例(2)
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("WScript.exe HideExec.VBS fc")
oExec.StdIn.Close
MsgBox oExec.StdOut.ReadAll,,"StdOut"
MsgBox oExec.StdErr.ReadAll,,"StdErr"
ラッパーの都合で、入力がなくても、最初にoExec.StdIn.Closeしないと駄目です。
また、スクリプトホストの設定に関係なく、WScript.exeを指定しないと駄目です。
関連付けの起動では、標準入出力がinheritされないからです。
« WScript.ShellのExec()で、コンソールアプリを非表示で実行するラッパー | トップページ | コンソールアプリを非表示で実行するラッパーをVB.NETで作る。 »