程序只运行一个实例,并且把前一个激活
2008-05-01 05:42
302 查看
(仅供参考)
Option Explicit
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Const SW_RESTORE = 9
Private Const OPEN_APPLICATION = 0
Private Const SINGLE_INSTANCE_OPEN = 1
Sub Main()
Dim MultiInstResult As Integer
MultiInstResult = MultiInst
If MultiInstResult = OPEN_APPLICATION Then
Form1.Show
ElseIf MultiInstResult = SINGLE_INSTANCE_OPEN Then
End
End If
End Sub
Private Function MultiInst() As Integer
Dim hwndFound As Long
Dim strWindowName
strWindowName = App.Title
App.Title = "temp title"
hwndFound = FindWindow(vbNullString, strWindowName)
If hwndFound Then
MultiInst = SINGLE_INSTANCE_OPEN
MsgBox "A instance of the application is already open." & vbCrLf & vbCrLf & "Only one open instance allowed.", vbOKOnly + vbExclamation, "App Name"
If IsIconic(hwndFound) Then
ShowWindow hwndFound, SW_RESTORE
SetForegroundWindow hwndFound
Else
SetForegroundWindow hwndFound
End If
ElseIf hwndFound = 0 Then
App.Title = strWindowName
MultiInst = OPEN_APPLICATION
End If
End Function
Option Explicit
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Const SW_RESTORE = 9
Private Const OPEN_APPLICATION = 0
Private Const SINGLE_INSTANCE_OPEN = 1
Sub Main()
Dim MultiInstResult As Integer
MultiInstResult = MultiInst
If MultiInstResult = OPEN_APPLICATION Then
Form1.Show
ElseIf MultiInstResult = SINGLE_INSTANCE_OPEN Then
End
End If
End Sub
Private Function MultiInst() As Integer
Dim hwndFound As Long
Dim strWindowName
strWindowName = App.Title
App.Title = "temp title"
hwndFound = FindWindow(vbNullString, strWindowName)
If hwndFound Then
MultiInst = SINGLE_INSTANCE_OPEN
MsgBox "A instance of the application is already open." & vbCrLf & vbCrLf & "Only one open instance allowed.", vbOKOnly + vbExclamation, "App Name"
If IsIconic(hwndFound) Then
ShowWindow hwndFound, SW_RESTORE
SetForegroundWindow hwndFound
Else
SetForegroundWindow hwndFound
End If
ElseIf hwndFound = 0 Then
App.Title = strWindowName
MultiInst = OPEN_APPLICATION
End If
End Function
相关文章推荐
- 程序只运行一个实例,并且把前一个激活
- 【转】C# WinForm 程序单实例运行,再次运行时激活前一个实例
- 只运行一个实例,单击程序快捷方式让程序激活到前台
- vc 防止程序重复运行(即只运行一个实例)并激活已运行进程和枚举进程及窗口
- Java Swing 每次打开只运行一个实例,并激活任务栏里的程序
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- 让一个程序只允许一个实例,并且如果已经有一个允许实例,则激活它
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- 程序只运行一个实例,并激活已运行的实例[12月15日更新]
- 保证程序只有一个实例运行并且先将旧实例关闭再运行新实例
- 分析RSSOwl如何做到只运行一个实例,并且可以激活
- VC程序只运行一个实例,并在打开多个时激活原窗口
- 程序只运行一个实例,并激活已运行的程序
- C# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- VC程序只运行一个实例,并在打开多个时激活原窗口
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- C# WinForm 程序单实例运行,再次运行时激活前一个实例
- 程序只运行一个实例,并激活前一个实例