在Win32应用程序中使用API的ShellExecute方法来启动外部应用程序;在VB可以使用Shell函数;在.Net,则使用Process类来启动外部应用程序,如果是VB.net,还可以使用Shell函数。
一、使用Process类启动外部应用程序
Process proc = New Process();
proc.StartInfo.FileName = exePath;
proc.StartInfo.Arguments = args;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
1. 创建一个Process对象。
2. 为Process对象设置StartInfo对象的相关属性,如FileName--应用程序的文件路径、Arguments--执行应用程序所需要的参数等。
3. 调用Process对象的Start()方法启动外部应用程序,并返回被启动的程序的进程ID。
4. 若要等待外部程序执行完成才把控制权返回到当前程序,可以在proc.Start()之后调用Process的WaitForExit()方法,如proc.WaitForExit(2000),这里的2000是超时时长;
二、VB.net使用Shell函数启动外部应用程序
Public Shared Function Shell ( PathName As String, Style As AppWinStyle, Wait As Boolean, Timeout As Integer) As Integer
参数
-
PathName
-
类型:
System.String
必需。String.要执行的程序的名称,以及所有必需的参数和命令行开关。PathName 也可以包含驱动器和目录路径或文件夹。
如果不知道程序的路径,则可以使用 GetFiles 进行定位。例如,可以调用 My.Computer.FileSystem.GetFiles("C:/", True, "testFile.txt"),这将返回驱动器 C:/ 上所有目录中每个名为 testFile.txt 的文件的完整路径。 -
-
Style
-
类型:
Microsoft.VisualBasic.AppWinStyle
可选。AppWinStyle.从 AppWinStyle 中选择的一个值,该值指定将要在其中运行程序的窗口的样式。如果省略 Style,Shell 将使用 AppWinStyle.MinimizedFocus 以最小化方式启动该程序并获得焦点。 -
-
Wait
-
类型:
System.Boolean
可选。Boolean.一个指示 Shell 函数是否应等待程序完成的值。如果省略 Wait,则 Shell 将使用 False。 -
-
Timeout
-
类型:
System.Int32
可选。Integer.如果 Wait 为 True,则为等待完成的毫秒数。如果省略 Timeout,则 Shell 使用 -1,表示没有超时设置并且 Shell 到程序结束时才返回。因此,如果省略 Timeout 或将其设置为 -1,则 Shell 可能永远不会将控制返回给您的程序。
如: Shell(exePath & " " & args, AppWinStyle.Hide, True, 10000)
注:
Shell 函数的返回值取决于 PathName 中指定的程序在 Shell 返回时是否仍在执行。如果将 Wait 设置为 True,并且程序在到达超时时间之前完成,则 Shell 返回零。如果超时过期或者省略 Wait 或将它设置为 False,则 Shell 返回程序的进程 ID。
如果 Shell 函数无法启动指定程序,则出现 FileNotFoundException 错误。