vb 检测程序是否正在运行,若正在运行则显示窗体

2025-04-06 18:55:27
推荐回答(2个)
回答1:

VB遍历进程查找窗口,这个过程很繁琐,而且代码量很大,所以我的代码用了巧妙的方法,在运行时在注册表保存了窗口句柄,这样就不用再查找了。测试通过,环境Win7+VB6:

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOW = 5

Private Sub Command1_Click()
Me.Hide
End Sub

Private Sub Form_Load()
Dim hwd As Long

If App.PrevInstance Then
  MsgBox "程序已经运行!"
  hwd = CLng(GetSetting(App.EXEName, "App", "MyHwnd"))
  ShowWindow hwd, SW_SHOW
  End
Else
  SaveSetting App.EXEName, "App", "MyHwnd", Me.hwnd
End If
End Sub

回答2:

'一、form_load中

If App.PrevInstance Then'程序已经运行

    ‘获得已运行程的句柄,然后发送自定义结构的消息

    Exit sub

End If

'二、hook消息,显示程序