保证C#应用程序只有一个实例在运行

原创 2004年07月07日 15:30:00

  [STAThread]
  static void Main()
  {
   Process instance = RunningInstance();
   if (instance == null)
   {
    Application.Run(new mainFrm());
   }
   else
   {
    //MessageBox.Show("此程序已经启动!");
    HandleRunningInstance(instance);
   }  
  }

  [DllImport("User32.dll")]
  private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);

  [DllImport("User32.dll")]
  private static extern bool SetForegroundWindow(IntPtr hWnd);

  private const int WS_SHOWNORMAL = 1;

  private static Process RunningInstance()
  {
   Process current = Process.GetCurrentProcess();
   Process[] processes = Process.GetProcessesByName(current.ProcessName);

   foreach (Process process in processes)
   {
    if (process.Id!=current.Id)
    {
     if (Assembly.GetExecutingAssembly().Location.Replace("/", "//")==current.MainModule.FileName)
     {
      return process;
     }
    }
   }

   return null;
  }

  private static void HandleRunningInstance(Process instance)
  {
   ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);

   SetForegroundWindow(instance.MainWindowHandle);
  }

应用程序每次只能运行一个实例(C#)

有时根据实际需要可能希望应用程序每次只有一个实例在运行,当再次点击同一个应用程序的可执行文件时并不生成一个新的实例,而是将相应的用户界面激活,显示在屏幕最前面。要解决这个问题主要是考虑如何判断应用程序...
  • CNHK1225
  • CNHK1225
  • 2015年01月14日 12:31
  • 889

保证应用程序只有一个实例在运行——VS2008

让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果有说明已经有一个实例在运行了,则当前程序通知用户怎样怎样...
  • u011981018
  • u011981018
  • 2015年01月29日 16:43
  • 580

C#应用程序只允许运行一个实例,多次运行的时候激活当前实例,显示其界面

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

VC保证应用程序只有一个实例在运行

http://www.cnblogs.com/lxshanye/archive/2013/05/22/3093182.html   HANDLE m_hMutex = ::CreateMutex(...
  • strong0511
  • strong0511
  • 2017年06月23日 10:18
  • 175

JAVA程序单实例运行的实现方法

Java程序单个实例运行的方法总结。
  • fanxiaobin577328725
  • fanxiaobin577328725
  • 2016年07月12日 22:47
  • 801

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

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

c#经典编程实例(四窗体应用程序)

一:.NET中窗体应用程序就是一种GUI程序 窗体创建的两种方式: (1)自动生成的是: Application.Run(new Form1()); 相当于: Form1 f...
  • zxq1138634642
  • zxq1138634642
  • 2013年06月15日 18:13
  • 22812

应用程序只运行一个实例

方法一、 BOOL CXXXApp::InitInstance() { // keep only one program running HANDLE hSem = CreateSemaphore...
  • kadinu80
  • kadinu80
  • 2013年08月29日 15:03
  • 603

解决C#程序只允许运行一个实例的几种方法详解

方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例. 把program.cs文件里的Main()函数改为如下代码:using System; using System.Windows.F...
  • jiangdefu
  • jiangdefu
  • 2016年08月12日 09:42
  • 2177

应用程序每次只能运行一个实例(C#)

http://chhaj5236.blog.163.com/blog/static/112881081201022664712661/ 有时根据实际需要可能希望应用程序每次只有一个实例在运行...
  • lyljp
  • lyljp
  • 2013年04月01日 17:16
  • 626
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:保证C#应用程序只有一个实例在运行
举报原因:
原因补充:

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