2012-12-11 21 views
0

我有一個窗體,應該按下按鈕時調用腳本。我試圖通過命令行調用它。我在命令行中測試了腳本,並且它能夠正常工作。我無法讓表單在命令行中運行腳本。有任何想法嗎?調用一個形式的參數腳本

這是命令行字符串我需要的外殼自主運行:

cscript.exe proc_image.vbs 170.191.XXX.XXX picName C:\PicStorage 

這是我目前在我的On_Click()在我的按鈕動作:

ShellEx "cscript.exe C:\Scripts\proc_image.vbs" & " 170.191.XXX.XXX" & " picName" & " PicStorage" 

我目標是調用腳本並傳遞它3個參數:一個IP地址,圖片名稱和最終存儲目標。我的問題是獲取表單在shell中執行上述命令行。由於

編輯:這裏是ShellEx的代碼:

   Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ 
(ByVal hWnd As Long, ByVal lpOperation As String, _ 
ByVal lpFile As String, ByVal lpParameters As String, _ 
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 

Private Declare Function ShellExecuteForExplore Lib "shell32.dll" Alias "ShellExecuteA" _ 

(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, lpParameters As Any, _ 
lpDirectory As Any, ByVal nShowCmd As Long) As Long 

Public Enum EShellShowConstants 
essSW_HIDE = 0 
essSW_MAXIMIZE = 3 
essSW_MINIMIZE = 6 
essSW_SHOWMAXIMIZED = 3 
essSW_SHOWMINIMIZED = 2 
essSW_SHOWNORMAL = 1 
essSW_SHOWNOACTIVATE = 4 
essSW_SHOWNA = 8 
essSW_SHOWMINNOACTIVE = 7 
essSW_SHOWDEFAULT = 10 
essSW_RESTORE = 9 
essSW_SHOW = 5 
End Enum 

Private Const ERROR_FILE_NOT_FOUND = 2& 
Private Const ERROR_PATH_NOT_FOUND = 3& 
Private Const ERROR_BAD_FORMAT = 11& 
Private Const SE_ERR_ACCESSDENIED = 5  ' access denied 
Private Const SE_ERR_ASSOCINCOMPLETE = 27 
Private Const SE_ERR_DDEBUSY = 30 
Private Const SE_ERR_DDEFAIL = 29 
Private Const SE_ERR_DDETIMEOUT = 28 
Private Const SE_ERR_DLLNOTFOUND = 32 
Private Const SE_ERR_FNF = 2    ' file not found 
Private Const SE_ERR_NOASSOC = 31 
Private Const SE_ERR_PNF = 3    ' path not found 
Private Const SE_ERR_OOM = 8    ' out of memory 
Private Const SE_ERR_SHARE = 26 


Public Function ShellEx(_ 
    ByVal sFIle As String, _ 
    Optional ByVal eShowCmd As EShellShowConstants = essSW_SHOWDEFAULT, _ 
    Optional ByVal sParameters As String = "", _ 
    Optional ByVal sDefaultDir As String = "", _ 
    Optional sOperation As String = "open", _ 
    Optional Owner As Long = 0 _ 
) As Boolean 
Dim lR As Long 
Dim lErr As Long, sErr As Long 
If (InStr(UCase$(sFIle), ".EXE") <> 0) Then 
    eShowCmd = 0 
End If 
On Error Resume Next 
If (sParameters = "") And (sDefaultDir = "") Then 
    lR = ShellExecuteForExplore(Owner, sOperation, sFIle, 0, 0, essSW_SHOWNORMAL) 
Else 
    lR = ShellExecute(Owner, sOperation, sFIle, sParameters, sDefaultDir, eShowCmd) 
End If 
If (lR < 0) Or (lR > 32) Then 
    ShellEx = True 
Else 
    ' raise an appropriate error: *ERROR CODES GO HERE* 
      End If 


    End Function 
+0

ShellEx調用返回什麼?值爲32或更小表示具體的錯誤。 http://www.vbaccelerator.com/codelib/shell/shellex.htm – jac

+0

用戶是否選擇或輸入了IP地址,圖片名稱和最終存儲目標?你可以顯示腳本的其餘部分嗎? – prprcupofcoffee

+0

從註冊表讀入IP地址,圖片名稱和存儲。 ShellEx是一個在命令行上執行命令的模塊。當我運行它時,什麼都不會返回,只是沒有任何反應。 –

回答

0

它只是PicStorage字符串之前看起來像你缺少C:\在ShellEx的命令?

相關問題