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

标签 vb6 exe

所以我最近陷入了 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

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

提前致谢!

最佳答案

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

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

关于vb6 - 通过表单运行 *.exe 应用程序,然后在应用程序退出时再次显示表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791912/

相关文章:

excel - 如何在我的 Excel 文件中找到特定数据,例如日期,然后使用 VB 6.0 在其旁边的列上写入时间?

string - (VB6) 逐行读取文本文件查找特定单词

java - 在 Windows 上分发 Java Swing 应用程序

c# - 尝试从 VB 6 调用 C# COM 对象

c++ - 添加对 VS 6.0 C++ 帮助的引用!

windows - 如何跟踪 ADO 调用

c - 不使用命令行窗口打开program.exe

r - 如何使用R调用exe程序和输入参数?

python - cx-卡住权限错误 : [Errno 13] Permission denied

C++ 将外部 .exe 嵌入到我编译的 .exe 中