Execl 宏中执行一个程序或打开一个文件,并等待返回,再执行下一步操作!执行期间不阻塞!可以处理其它操作!可以利用类改写成事件驱动!
'+------------------------------------------------------------+
'|功能:调用一个程序(或用默认程序打开一个文件) |
'|日期:2024-11-04 10:00 |
'|编者:天下乌贼 |
'|关注:https://wjjhyf.eu5.org |
'|备注:WaitForSingleObject等待结束 |
'+------------------------------------------------------------+
Option Explicit
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWNORMAL = 1
Private Const SW_SHOWMINIMIZED = 2
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Private Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hWnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Private Declare Function ShellExecuteExAPI Lib "shell32.dll" Alias "ShellExecuteExA" (pExecInfo As SHELLEXECUTEINFO) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
'+------------------------------------------------------------+
'|功能:调用一个程序(或用默认程序打开一个文件),直接返回或 |
'| 完成返回 |
'|入口:sFile:调用的程序或要打开的文件 |
'| sParameters:调用程序使用的参数打开文件必须为空 |
'| sDirectory:调用程序初始化文件夹,为空则程序所在文件夹|
'| sOperation:操作方式,默认open |
'| bWait: true,等街程序关闭,false,直接返回 |
'| iWnd:调用窗口hWnd |
'| nShowCmd:打开窗口模式,默认SW_SHOWNORMAL |
'|出口:ShellExecuteEx返回值 |
'|编者:天下乌贼 |
'|日期:2024-11-04 10:46 |
'|关注:https://wjjhyf.eu5.org |
'|备注:WaitForSingleObject等待结束 |
'+------------------------------------------------------------+
Public Function ShellExecute(ByVal sFile As String, Optional ByVal sParameters As String, Optional ByVal sDirectory As String, _
Optional ByVal sOperation As String = "open", Optional ByVal bWait As Boolean, _
Optional ByVal iWnd As Long, Optional ByVal nShowCmd As Long = 1) As Long
Const WAIT_OBJECT_0 = 0
Dim ShExecInfo As SHELLEXECUTEINFO
With ShExecInfo
.cbSize = Len(ShExecInfo)
.fMask = IIf(bWait, SEE_MASK_NOCLOSEPROCESS, 0)
.hWnd = iWnd
.lpVerb = sOperation
.lpFile = sFile
.lpParameters = sParameters
.lpDirectory = sDirectory
.nShow = nShowCmd
'调用程序
ShellExecute = ShellExecuteExAPI(ShExecInfo)
'等待程序结束
If Not (.hProcess = 0) Then
Do While Not (WaitForSingleObject(.hProcess, 200) = WAIT_OBJECT_0)
DoEvents
Loop
End If
End With
End Function
调用 ShellExecute “https://wjjhyf.eu5.org”,,,, true 【使用默认浏览器打开网站https://wjjhyf.eu5.org,等到浏览器关闭后,才继续执行。若不等待,true改成false即可】

被折叠的 条评论
为什么被折叠?



