我可以获得Shell.Application ShellExecute的返回值吗?

时间:2014-12-01 05:15:47

标签: vbscript wsh

我使用VBScript为批处理文件创建UAC提示。我不知道如何获得UAC提示的返回值。例如,如果我尝试向UAC提供一个不存在的文件,我应该收到错误,对吗?

例如:

Dim rc
Set UAC = CreateObject("Shell.Application") 
rc = UAC.ShellExecute("thisdoesntexist.exe", "", "", "runas", 1)
WScript.Echo rc

rc不包含代码。另外,有什么方法可以得到我执行的任何错误代码吗? ShellExecute在VBScript中是异步的吗?

1 个答案:

答案 0 :(得分:1)

  

IShellDispatch2.ShellExecute method

     

对指定文件执行指定操作。

     

语法

     

IShellDispatch2.ShellExecute(sFile [,vArguments] [,vDirectory] ​​[,   vOperation] [,vShow])参数

     

sFile必需。包含文件名称的字符串   ShellExecute将执行vOperation指定的操作。

     

vArguments可选。包含参数值的变量   操作。

     

vDirectory可选。变量包含完全限定的路径   包含sFile指定的文件的目录。如果这   未指定参数,使用当前工作目录。

     

vOperation可选。变量,指定要执行的操作   执行。它应该设置为动词字符串之一   由文件支持。有关动词的讨论,请参阅备注   部分。如果未指定此参数,则默认操作为   执行。

     

vShow可选。 Variant,推荐属于哪个窗口   应显示执行操作的应用程序   原来。应用程序可以忽略此建议。 vShow可以   采用以下值之一。如果未指定此参数,   应用程序使用其默认值。

     

使用隐藏窗口打开应用程序。

     

1使用普通窗口打开应用程序。如果窗口是   最小化或最大化,系统将其恢复到原始大小   和位置。

     

2使用最小化窗口打开应用程序。

     

3使用最大化窗口打开应用程序。

     

4打开应用程序及其窗口的最新大小和   位置。活动窗口保持活动状态。

     

5以其当前大小和窗口打开应用程序   位置。

     

7使用最小化窗口打开应用程序。活动窗口   仍然活跃。

     

10打开应用程序,使其窗口处于指定的默认状态   通过申请。

     
     

返回值

     

没有返回值。

     
     

说明

     

此方法相当于启动其中一个相关命令   使用文件的快捷菜单。每个命令都由动词标识   串。支持的动词因文件而异。最常见的   支持的动词是“打开”,通常也是默认动词。   其他人可能仅受某些类型的文件支持。为了更进一步的   讨论Shell动词,请参阅启动应用程序或扩展   捷径菜单。

     

此方法目前在Microsoft Visual Basic中不可用。

     

实施例

     

以下示例使用ShellExecute打开Microsoft记事本。   显示Microsoft JScript和Visual Basic Sc​​ripting的正确用法   版(VBScript)。

<script language="VBScript">
    function fnShellExecuteVB()
        dim objShell

        set objShell = CreateObject("Shell.Application")

        objShell.ShellExecute "notepad.exe", "", "", "open", 1

        set objShell = nothing
    end function
</script>

现在所有的COM调用都看起来像HResult = methodcall(param1, param2, ..., paramn, OUTPARAM)

VB假装OUTPARAM = methodcall(param1, Param2, ..., paramn)假装HResult出现err.object

所以错误仍然会触发,只是它不等待发现。