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

原创 2003年01月15日 09:23:00

(仅供参考)

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#应用程序只允许运行一个实例,多次运行的时候激活当前实例,显示其界面

很多时候,我们开发的程序,需要单例运行的的功能,即整个应用程序只允许同时运行最多一个实例,重复运行的时候,激活当前实力,显示其界面。   在C#程序中,其解决方案有多重,可以参照Charles Ch...
  • honantic
  • honantic
  • 2015年08月17日 15:04
  • 21259

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

下载本文示例工程示例代码运行效果图如下:实现程序只运行一次的方法很多,但是原理都是一样的,就是运行第一次的时候设置一个标记,每次运行的时候检查该标记,如果有就说明已经运行了。具体实现: 1、在程序初始...
  • nnsword
  • nnsword
  • 2008年10月13日 20:16
  • 474

程序只启动一个实例的几种方法

    有些时候,我们要求一个程序在系统中只能启动一个实例。比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例。原因很简单,如果同时启动几个...
  • starlee
  • starlee
  • 2007年03月20日 09:26
  • 11698

Qt程序只运行一个实例

#include QSharedMemory shared("name");//随便填个名字就行 if (shared.attach()) {         return 0; } shared....
  • caoshangpa
  • caoshangpa
  • 2016年04月01日 15:03
  • 2066

C#程序只允许运行一个实例的解决方案

C#程序只允许运行一个实例的解决方案 Posted on 2010-03-15 16:29 Charles Chen 阅读(5068) 评论(13) 编辑 收藏      最近在做winform的...
  • lphbtm
  • lphbtm
  • 2016年08月10日 15:47
  • 1137

VC++实现程序只运行一个实例 最简单办法

C++如何使应用程序只运行一个实例 最简单的方法:在应用程序类中使用互斥量是应用程序只运行一次(一个实例)的简单的方法。方法是通过VC下的GUIDGEN.EXE程序产生一个全局标志。在VC安装目录中...
  • i_likechard
  • i_likechard
  • 2017年07月11日 09:19
  • 394

如何让Java程序只运行一个实例

Java没有提供这样的机制。从操作系统的观点来看,一个启动的Java Application仅仅是一 个JVM的运行实例。运行相同Application的两个实例,仅仅是运行两个无关的JVM。 只...
  • yaerfeng
  • yaerfeng
  • 2012年02月16日 15:20
  • 6736

让MFC程序只运行一个实例

以对话框程序Demo为例:1、在CDemoApp类中添加成员变量: HANDLE m_hMutex;2、重载CWinApp::InitInstance 和 CWinApp::ExitInstance...
  • hxmcnu
  • hxmcnu
  • 2014年03月17日 18:31
  • 1287

使Qt程序只运行一个实例

Normal 0 7.8 磅 0 2 false false false Microsof...
  • tingsking18
  • tingsking18
  • 2010年05月20日 08:48
  • 19025

.net中如何只允许运行一个程序实例

如何使一个Windows应用程序只运行一个实例,看如下代码: using System; using System.Collections.Generic; using System.Windows...
  • binyao02123202
  • binyao02123202
  • 2012年01月20日 13:44
  • 1276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序只运行一个实例,并且把前一个激活
举报原因:
原因补充:

(最多只允许输入30个字)