• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

程序只运行一个实例,并且把前一个激活

发布: 2007-5-25 09:21 | 作者: jennyvenus | 来源: 互联网 | 查看: 49次 | 进入软件测试论坛讨论

领测软件测试网

(仅供参考)

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

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/