做了两个独立的程序:1.exe 、2.exe
1.exe里面可以放置定时器。
2.exe里面没有定时器,只是在内部进行一些简单的数学运算,且运行并计算完毕后窗体上会给出计算结果显示的。如何让早已运行的1.exe知道当前的2.exe的计算是否运行结束。
有几种方法呢?
1.exe里面可以放置定时器。
2.exe里面没有定时器,只是在内部进行一些简单的数学运算,且运行并计算完毕后窗体上会给出计算结果显示的。如何让早已运行的1.exe知道当前的2.exe的计算是否运行结束。
有几种方法呢?
另外你也可以用全局钩子实现,不过只用vb很难实现
'在1.exe中申明如下API
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
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
Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFFFFFF
'调用如下
Dim pId As Long, pHnd As Long
pId = Shell(要执行的应用程序即2.exe)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId)
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE)
Call CloseHandle(pHnd)
'2.exe结束,执行你的操作
..................
else
msgbox "调用失败"
End If
Dim TemphWnd As Long
TemphWnd = FindWindow(vbNullString, "2.exe的窗口标题")
If TemphWnd = 0 Then
MsgBox "2.exe 当前没有运行"
End If
End If
Dim TemphWnd As Long
TemphWnd = FindWindow(vbNullString, "2.exe的窗口标题")
If TemphWnd Then
isRunning = True
Else
If isRunning Then
isRunning = False
MsgBox "2.exe 运行结束"
End If
End If
End If