打印本文 打印本文 关闭窗口 关闭窗口
程序只运行一个实例,并且把前一个激活
作者:武汉SEO闵涛  文章来源:敏韬网  点击数728  更新时间:2009/4/23 16:38:03  文章录入:mintao  责任编辑:mintao

(仅供参考)

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

打印本文 打印本文 关闭窗口 关闭窗口