2010-08-24 73 views
0

我試圖運行下面的代碼位VB6的DLL:Wscript.Shell運行不工作始終

Dim objWSShell As Object 
Set objWSShell = CreateObject("Wscript.Shell") 
objWSShell.Run strPath & "test.bat", 0, True 

的DLL進程被掛斷了電話。批處理文件不會運行,無論其內容如何。我甚至試過一個空的批處理文件,它仍然掛起。但是,如果我嘗試使用同一段代碼,請執行以下更改:

Dim objWSShell As Object 
Set objWSShell = CreateObject("Wscript.Shell") 
objWSShell.Run "calc", 0, True 

工作正常。我不知道爲什麼EXE文件工作和蝙蝠文件沒有。有任何想法嗎?

回答

2

您需要運行cmd.exe並將BAT文件傳遞給它。

objWSShell.Run "%COMSPEC% /c " & strPath & "test.bat", 0, True 
+0

非常感謝!那就是訣竅。 – 2010-08-25 13:05:09

3

你並不需要使用shell腳本的東西,你可以讓事情變得更簡單&使用內置的Shell()功能:

shell environ$("COMSPEC") & " /C c:\xxx\yyy.bat", vbNormalFocus 

同上,用於:

shell "calc", vbNormalFocus 
+0

我同意這一點,如果需要,可以使用「殼牌和等待」技術來增強它。谷歌應該很快舉出一些例子。 – Bob77 2010-08-25 17:48:54

+0

我也會記住這一點。 – 2010-08-25 20:23:36

1

我有一個similar issue批處理文件不能直接從WScript.Shell運行,但我沒有權限修改VBScript。事實證明,在.bat擴展名上有一個註冊表覆蓋。

雖然使用COMSPEC爲我工作,刪除註冊表項實際上固定不僅僅是WScript問題。