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
'一、form_load中
If App.PrevInstance Then'程序已经运行
‘获得已运行程的句柄,然后发送自定义结构的消息
Exit sub
End If
'二、hook消息,显示程序