是的。或用ShellExecute
Shell 函数
执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。
语法
Shell(pathname[,windowstyle])
Shell 函数的语法含有下面这些命名参数:
部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值:
常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明
如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
Shell 函数示例
本示例使用 Shell 函数来完成一个用户指定的应用程序。
' 将第二个参数值设成 1,可让该程序以正常大小的窗口完成,并且拥有焦点。
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALCEXE", 1) ' 完成Calculator。
打开文件夹
Private Sub Command1_Click()
Dim filePath As String
filePath = "d:\"
Shell "explorer " & filePath, vbNormalFocus
End Sub
至于打开文件设计到文件打开方式,所以自己调应相关的case 来调用相应的程序
如何直接放在和你生成应用程序(exe)放在一起则:Shell AppPath & "\603exe"如果是放在你生成的应用程序中另一个文件夹中,例如你上面所示的shell AppPath & "\pictruce\603exe"
腾讯这些软件安装时都会在注册表对应键值下注册安装路径的,要实现你这样的功能
基本就是读取注册表,然后判断,再执行
具体百度一大堆的 注册表读软件安装路径 的技术文档,自己百度一下,看看吧
真神人也Private Sub sh()
Dim x As Long
x = Shell("C:\AAexe", vbNormalFocus)
Do While x = 0DoEvents
Loop'其他代码。。。
End Sub这个代码中,shell返回之后,x的值还会改变吗???????????? 要想同步,可以用API函数,CreateProcess 创建进程,再用 WaitForSingleObject 等特进程句柄返回信号。代码比较复杂,我就不多说了。
Option Explicit
'shell and wait示例
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STATUS_PENDING = &H103
Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFFFFFF
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
'shell and wait
'执行外部命令并等待程序执行完毕再返回控制权
Private Sub Command1_Click()
Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
pId = Shell("F:\1bat") ' Shell 传回 Process Id
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
DoEvents
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
Call CloseHandle(pHnd)
End If
MsgBox "执行完毕 "
End Sub
以上就是关于VB如何打开其他程序全部的内容,包括:VB如何打开其他程序、vb 如何用shell打开文件或文件夹、用vb中的shell如何调用它的相对路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)