VB里使用shell调用某一个程序来生成一个txt文件,我在vb程序里如何知道该shell程序是否已经结束呢?
因为我需要在下面的程序里使用到该txt文件。
如果接着就使用这个txt文件,很可能txt文件还没完全写好,也有可能shell调用的那个程序由于参数问题,txt写入失败。另外shell(xxx.exe 参数)会有个返回值,请问这个返回值有意义吗?
因为我需要在下面的程序里使用到该txt文件。
如果接着就使用这个txt文件,很可能txt文件还没完全写好,也有可能shell调用的那个程序由于参数问题,txt写入失败。另外shell(xxx.exe 参数)会有个返回值,请问这个返回值有意义吗?
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteExA" (lpInfo As Any) As Long
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
' Optional members
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon_OR_Monitor As Long
hProcess As Long
End Type
Private Sub Form_Load()
Dim si As SHELLEXECUTEINFO
si.cbSize = Len(si)
si.lpVerb = "open"
si.lpFile = "notepad.exe"
si.lpParameters = ""
si.lpDirectory = ""
si.nShow = 5 'SW_SHOW
si.fMask = &H40 'SEE_MASK_NOCLOSEPROCESS
ShellExecuteEx si
If si.hProcess <> 0 Then
WaitForSingleObject si.hProcess, &HFFFFFFFF ' 无限等待, 直到程式结束
CloseHandle si.hProcess
MsgBox "程序运行完毕!"
End If
End Sub