VB中怎么实现“我的程序.exe”如果已经在运行就恢复之前已经打开的程序界面,新启动的程序自动退出,如果之前打开的程序窗体最小化了或隐藏的也从任务栏里面恢复到默认窗口,就相当于聚焦已经打开的程序窗口,不让用户重复启动这个软件。我的这个小软件程序有登录过程窗体的,已经登录的界面是unload了登录窗体,打开主窗体的。程序自己加载的是登录窗体,所以这个判断要做在登录的form当中。现在的代码:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'主窗体加载
Private Sub Form_Load()
If App.PrevInstance = True Then '如果已经登录
ShowWindow FindWindow(vbNullString, App.Title), vbNormal
End
End If
End Sub偶是小虾新手,请VB高手或熟手指教,最好给出具体示例代码(包括API),谢谢! 有好的答案加分
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'主窗体加载
Private Sub Form_Load()
If App.PrevInstance = True Then '如果已经登录
ShowWindow FindWindow(vbNullString, App.Title), vbNormal
End
End If
End Sub偶是小虾新手,请VB高手或熟手指教,最好给出具体示例代码(包括API),谢谢! 有好的答案加分
End
就行了嘛。
以下程序我已经测试成功,楼主请编译后,测试。(不知道我这算不算好答案?)Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As Any, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Private Const SW_SHOWNORMAL = 1Private Sub Form_Load()
If App.PrevInstance = True Then
Dim title As String: title = Me.Caption
Me.Caption = ""
ShowWindow FindWindow(vbNullString, title), SW_SHOWNORMAL
AppActivate title
End
End If
End Sub