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

WScript.ShellのExec()でコンソールアプリを実行すると、
コンソールウィンドウが表示されます。それを非表示にする方法です。

コンソールウィンドウがない環境、つまり、WScript.exeからExec()で
コンソールアプリを起動すると、コンソールウィンドウが生成されます。

コンソールウィンドウがある環境、つまり、CScript.exeからExec()で
コンソールアプリを起動すると、コンソールウィンドウは生成されません。

これを利用すれば、Exec()でコンソールアプリを非表示で実行できます。

つまり、WScript.exeからRun()で、CScript.exeを非表示で起動し、
その中からExec()でコンソールアプリを起動すればよいのです。

基本的にはRun()するスクリプトとExec()するスクリプトの二つが必要ですが、
WSFでひとつのファイルにしたり、再帰呼び出しで一本化することもできます。

以下のWSFは、そういうサンプルです。

<package>
<job>
<script language=vbscript>
Dim Args
Dim Arg
Args=Array("CScript.exe //job:exec","""" & 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),0,True)
</script>
</job>
<job id=exec>
<script language=vbscript>
Dim wShell
Dim oExec
Dim Args
Dim Arg

(1/2) 次»

パソコン・インターネット | プログラミング
2007/05/11


by JLISTING Ads


カテゴリー一覧
最近のコメント

このブログを友達に教える

コミュニティ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説


画面TOP↑


by JLISTING Ads

powered by cocolog