VBS Shell.Application中ShellExecute的使用方法详解

 更新时间:2023年05月21日 14:36:24   作者:豆汁拌咖啡  
最近在项目中偶然用到了使用VBS调用shell.application中的ShellExecute方法,在百度搜索一圈后发现很难找到关于这个方法的详细的中文教程,最后是在微软的官方文档中才找到了这个指令的详细英文教程,需要的朋友可以参考下

最近在项目中偶然用到了使用VBS调用“shell.application”中的ShellExecute方法。在百度搜索一圈后发现很难找到关于这个方法的详细的中文教程。最后是在微软的官方文档中才找到了这个指令的详细英文教程。现将该方法的详细描述用中文分享给各位码友。

首先,VBS中调用该方法可以用Set Shell=CreateObject("Shell.Application")来创建对象。该方法的命令格式如下:

Shell.ShellExecute "执行命令或文件的名称", "执行命令的附加参数", "执行命令或文件所在目录的绝对路径", "操作", 窗口显示类型

具体解释如下:

1.执行命令或文件的名称:就是您要执行的命令或处理文件的名称。例如您想打开一个cmd指令窗口,那么这个名称就是cmd.exe。

2.执行命令的附加参数:如果您执行的命令是需要参数的,则可以将这些参数填写在这里。

3.执行命令或文件所在目录的绝对路径:填写您要执行的命令文件或要处理的文件的存储路径。如果是空则默认为当前路径。

4.操作:本参数有六项设定值可供选择。

设定值中文意思描述
edit编辑使用对应的编辑器打开第一个参数中输入的文件以对其编辑。
find查找在第三个参数指定的目录下查找第一个参数指定的文件。
open打开运行第一个参数中指定的文件。如果该文件不是一个可执行文件,则用相应的可以打开该文件的软件打开它。
print打印打印第一个参数中指定的文件。
properties属性列出第一个参数中指定文件的所有属性。
runas以管理员账户运行以管理员账户运行第一个参数指定的程序。用户账户管理系统(UAC)会提示用户确认程序以更高的权限运行或要求用户输入管理员账户的凭证。

5.窗口显示类型:这个参数用于设定在执行第一个参数中指定的程序时,以何种方式打开程序窗口。这是一个用数字表示不同设定值的参数。具体内容如下:

设定值描述
0在隐藏的窗口中打开程序。
1以正常尺寸打开窗口。如果该窗口已经最大化或最小化,则系统会自动将窗口回滚到正常状态。
2用最小化窗口打开程序。
3用最大化窗口打开程序。
4以最近使用的窗口尺寸和位置打开程序窗口。激活的窗口仍然激活。
5以当前使用的窗口尺寸和位置打开程序窗口。
7以最小化打开程序窗口。当前激活的窗口仍然激活。
10以打开程序默认的窗口尺寸打开程序窗口。

应用实例:本例子是使用ShellExecute方法调用“C:\Windows\System32\cmd.exe”控制台程序来添加用户。用户名称为username,密码为password。以管理员账户运行。

Set Shell=CreateObject("Shell.Application")
Shell.ShellExecute "cmd.exe", "/k net user username password /add", "C:\Windows\System32\", "runas", 1

Shell.ShellExecute 方法官方资料

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

语法
JScript:

JavaScript

iRetVal = Shell.ShellExecute(
  sFile,
  [ vArguments ],
  [ vDirectory ],
  [ vOperation ],
  [ vShow ]
);

VBScript:

iRetVal = Shell.ShellExecute( _
  sFile, _
  [ ByVal vArguments ], _
  [ ByVal vDirectory ], _
  [ ByVal vOperation ], _
  [ ByVal vShow ] _
)

VB:

Shell.ShellExecute( _
  ByVal sFile As BSTR, _
  [ ByVal vArguments As Variant ], _
  [ ByVal vDirectory As Variant ], _
  [ ByVal vOperation As Variant ], _
  [ ByVal vShow As Variant ] _
) As Integer

参数

sFile [in]

类型: BSTR

一个 字符串 ,其中包含 ShellExecute 将对其执行 vOperation 指定的操作的文件的名称。

vArguments [in, 可选]

类型: Variant

包含操作的参数值的字符串。

vDirectory [in, 可选]

类型: Variant

包含 sFile 指定的文件的目录的完全限定路径。 如果未指定此参数,则使用当前工作目录。

vOperation [in, 可选]

类型: Variant

要执行的操作。 此值设置为文件支持的谓词字符串之一。 有关谓词的讨论,请参阅“备注”部分。 如果未指定此参数,则执行默认操作。

vShow [in, 可选]

类型: Variant

最初应如何显示应用程序窗口的建议。 应用程序可以忽略此建议。 此参数的取值可为下列值之一: 如果未指定此参数,则应用程序使用其默认值。

含义

0

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

1

使用普通窗口打开应用程序。 如果窗口最小化或最大化,系统会将其还原为其原始大小和位置。

2

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

3

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

4

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

5

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

7

使用最小化窗口打开应用程序。 活动窗口保持活动状态。

10

打开应用程序,其窗口处于应用程序指定的默认状态。

注解

此方法等效于启动与文件快捷菜单关联的命令之一。 每个命令由谓词字符串表示。 支持的谓词集因文件而异。 最常支持的谓词是“open”,这通常是默认谓词。 其他谓词可能仅支持某些类型的文件。 有关 Shell 谓词的进一步讨论,请参阅 启动应用程序 或 扩展快捷菜单

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

示例

以下示例演示如何使用 ShellExecute 打开记事本。 JScript和 VBScript 的使用情况显示。

JScript:

function ShellExecuteJS()
{
    var objShell = new ActiveXObject("Shell.Application");
    objShell.ShellExecute("notepad.exe", "", "", "open", 1);
}

VBScript:

Function ShellExecuteVB()
    Dim objShell
    Set objShell = CreateObject("Shell.Application")
    Call objShell.ShellExecute("notepad.exe", "", "", "open", 1)
End Function

要求

要求
最低受支持的客户端Windows 2000 Professional,Windows XP [仅限桌面应用]
最低受支持的服务器Windows Server 2003 [仅限桌面应用]
标头

Shldisp.h

IDL

Shldisp.idl

DLL

Shell32.dll (版本 5.0 或更高版本)

想了解更多的朋友可以到微软官方查看

https://learn.microsoft.com/zh-cn/windows/win32/shell/shell-shellexecute

到此这篇关于VBS Shell.Application中ShellExecute的使用方法详解的文章就介绍到这了,更多相关vbs Shell.ShellExecute 方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 几段非常有用的脚本(来自微软网站,由downmoon精心收集)

    几段非常有用的脚本(来自微软网站,由downmoon精心收集)

    几段非常有用的脚本(来自微软网站,由downmoon精心收集)...
    2007-03-03
  • vbs中获取脚本当前路径的2个方法

    vbs中获取脚本当前路径的2个方法

    这篇文章主要介绍了vbs中获取当前脚本所在路径的2个方法,本文中的方法都是通过FileSystemObject来实现,需要的朋友可以参考下
    2014-08-08
  • 用vbs实现的强制杀进程的脚本

    用vbs实现的强制杀进程的脚本

    用vbscript实现的强制杀系统进程的脚本代码,主要用于一些杀毒软件,占系统内存或cpu,我们可以用下面的方法杀掉,黑人也必须杀掉杀毒软件,才能进行下一步操作,不建议搞破坏。
    2008-05-05
  • VBS脚本实现遍历批量替换多目录多文件内容的代码

    VBS脚本实现遍历批量替换多目录多文件内容的代码

    这篇文章主要介绍了VBS脚本实现遍历批量替换多目录多文件内容的代码,主要是结合了bat,实现这种效果,需要的朋友可以参考一下
    2018-12-12
  • 把任意文件转成vbs文件的file2vbs的vbs代码

    把任意文件转成vbs文件的file2vbs的vbs代码

    文章作者:xiaolu [BST] 信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 这个不是exe2vbs 所有类型的文件都可以转化的 不过限于string的大小 文件不能太大 我测试过3m的文件是可以的
    2008-05-05
  • vbs实现的tasklist效果代码

    vbs实现的tasklist效果代码

    这个简短的脚本使用wmi显示与工具“tasklist”中相同的信息,但只有在命令行下输出结果。它也可以在另一台计算机上查看远程任务,需要的朋友可以参考下
    2019-04-04
  • 可以定时自动关机的vbs脚本

    可以定时自动关机的vbs脚本

    可以定时自动关机的vbs脚本...
    2007-02-02
  • 校准系统时间的VBS代码

    校准系统时间的VBS代码

    更新为自动判断时间格式,WIN7 XP测试通过,WIN8待测试,主要是通过获取百度的相关信息然后跟系统时间进行比较
    2013-01-01
  • VBScript开发自动化测试脚本的方法分析

    VBScript开发自动化测试脚本的方法分析

    很多人都觉得微软的VBScript功能比较弱,如果从开发自动化测试的角度来讲,更是不可能了。从我对VBScript脚本的了解来看,对一个脚本是否可以做自动化测试需要这个测试人员具备两方面的知识,第一个,就是对VBScript脚本开发语言精通,要了解VBScript的核心技术如何更广泛的应用;第二个,就是要有自动化的测试思想,这个一定得是做过测试工作的能够了解的多一些。
    2008-03-03
  • vbs实现无黑框无DOS窗口隐藏批处理运行窗口

    vbs实现无黑框无DOS窗口隐藏批处理运行窗口

    支持路径或文件名带空格,网上给出的VBS代码貌似没有留到空格问题,特此补充。 黑友们喜欢的东西,以后运行批处理就没有明显的窗口的
    2008-05-05

最新评论