运行 *.exe 应用程序通过表单,然后在应用程序退出时再次显示表单

Run an *.exe application via form, then show the form again upon app exit

所以我最近陷入了我的 VB6 编程,我试图让表单在隐藏后再次出现,而 运行 一个 *.exe 应用程序。

此表单只有一个可打开 *.exe 的按钮,单击按钮后,相关程序将打开并隐藏表单。一旦有问题的程序关闭,表单应该重新出现,但在我的情况下它不会。以下是按钮本身的代码:

Private Sub btnClicky_Click()
Dim Res
Dim Filename
Filename = "C:\Windows\notepad.exe"
    Res = Shell(Filename, vbHide)

If IsProcessRunning("Notepad.exe") Then
    Me.Hide
Else
    Me.Show
End If
End Sub

一旦它起作用,我就会将代码实现到我正在工作的任务中,因为我目前正在办公室实习计划中,我必须创建一个涉及链接多个应用程序的用户界面程序。我们将不胜感激。

提前致谢!

你的代码只有在按钮被点击时才会执行,我建议你在你的表单中插入一个计时器,如果 "Timer1_Timer" 当你必须测试时:

Private Sub Timer1_Timer()
If IsProcessRunning("Notepad.exe") Then
    Me.Hide
Else
    Me.Show
End If
End Sub

更好的方法是 shell 应用程序,隐藏您的应用程序并等待进程终止:

Private Const SYNCHRONIZE = &H100000
Private Const WAIT_INFINITE = -1&
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
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 Sub btnClicky_Click()
   Dim hProcess As Long

   hProcess = OpenProcess(SYNCHRONIZE, True, Shell("notepad.exe", vbNormalFocus))

   Me.Hide

   Call WaitForSingleObject(hProcess, WAIT_INFINITE)
   Call CloseHandle(hProcess)

   Me.Show
   Me.SetFocus
End Sub