保证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);
  }

保证应用程序只有一个实例运行.txt

主要应用System.Diagnostics名字空间中的Process类来实现思路,我们在运行程序前,查找进程中是否有同名的进程,同时运行位置也相同,如是没有运行该程序,如果有,就将同名的同位置的程序...
  • ycl111
  • ycl111
  • 2005-03-22 13:46:00
  • 855

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

[C#] public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Proces...
  • 21aspnet
  • 21aspnet
  • 2007-03-24 14:28:00
  • 2099

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

  • 2009年11月16日 19:18
  • 762B
  • 下载

让MFC程序只运行一个实例

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

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

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

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

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

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

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

Java 只运行一个实例

查了一下资料,Java 只运行一个实例的方法有下面三种: 1、占用端口(有效,但是有端口被挪用的缺陷) 2、检查文件是否存在(有效,但突然停机可能有问题) 3、使用JNI(有效,但丧失可移植性)...
  • huangng
  • huangng
  • 2017-07-02 21:09:58
  • 271

Qt只能运行一个实例的3种方法

转自 http://blog.csdn.net/robertkun/article/details/8518576 1. 共享内存的方法 Unix: QSharedMemory "owns" the ...
  • u010855021
  • u010855021
  • 2016-07-19 23:37:20
  • 3228

仅运行一个程序的单个实例

一些程序,特别是很多的daemon,需要确保同一时刻只有一个程序实例在系统中运行。完成这项任务的一个常见方法是:使用记录锁。       让daemon创建一个文件并在该文件上放置一把写锁。daem...
  • a627088424
  • a627088424
  • 2015-08-11 16:33:46
  • 906
收藏助手
不良信息举报
您举报文章:保证C#应用程序只有一个实例在运行
举报原因:
原因补充:

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