如何检测系统是否已经运行了相同的程序。

原创 2004年10月29日 14:22:00

using System;
using System.Xml;
using System.ComponentModel ;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime;
using System.Reflection;
using System.Runtime.InteropServices;

[STAThread]
  static void Main()   //主程序运行
  {
   Process intance=RunningIntance();  //调用检查函数
   if(intance==null)    //不存在相同的程序
   {
        Application.Run(new frmMain());
      }
   else  //存在相同的程序
   {
    HandleRunningInstance(intance);
   }

 }


private static Process RunningIntance()
  {
   Process currentProcess=Process.GetCurrentProcess();
   Process [] processCollection=Process.GetProcessesByName(currentProcess.ProcessName);
   foreach(Process p in processCollection)
   {
    if(p.Id!=currentProcess.Id)  //检查ID是否相同
    {
        //检查运行文件路径是否相同
     if(Assembly.GetExecutingAssembly().Location.Replace("/","
//")==currentProcess.MainModule.FileName)
      return currentProcess;
    }
   }
   return null;
  }

  private static void HandleRunningInstance(Process instance)
  {
   MessageBox.Show("该应用系统(PSP)已经在运行!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
   ShowWindowAsync(instance.MainWindowHandle,1); //调用api函数,正常显示窗口
   SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端。
    
  }

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


如何检测系统是否已经运行了相同的程序

using System;  using System.Xml;  using System.ComponentModel ;  using System.Windows.Forms;  using ...
  • lmw1179
  • lmw1179
  • 2010年02月03日 22:25
  • 91

检测系统是否已经运行了相同的程序

using System;using System.Xml;using System.ComponentModel ;using System.Windows.Forms;using System.D...
  • Tisten
  • Tisten
  • 2004年11月03日 01:56
  • 475

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

一些程序,特别是很多的daemon,需要确保同一时刻只有一个程序实例在系统中运行。完成这项任务的一个常见方法是:使用记录锁。       让daemon创建一个文件并在该文件上放置一把写锁。daem...
  • a627088424
  • a627088424
  • 2015年08月11日 16:33
  • 885

判断是否已经运行了某个程序

using System.Threading;using System.Windows.Forms;[STAThread]static void Main(string[] args){bool re...
  • tangyong12
  • tangyong12
  • 2006年10月11日 17:06
  • 639

判断程序是否运行在虚拟机中的代码

首先我们要了解一下什么是虚拟机, 对虚拟机的通用解释是通过软件模拟的具有完整硬件系统功能的, 运行在一个完全隔离环境中的完整计算机系统. 通过虚拟机软件, 你可以在一台物理计算机上模拟出一台或多台虚拟...
  • liujiayu2
  • liujiayu2
  • 2017年12月08日 10:53
  • 250

程序检测自身是否运行在虚拟机下

来自:http://www.codeproject.com/kb/system/VmDetect.aspx    分析病毒的时候人们通常在vmware等虚拟机下运行,以查看病毒的执行路径或者提取特征码...
  • gylll
  • gylll
  • 2010年10月28日 11:44
  • 1217

判断程序是否已经运行,然后kill旧的或者新的.

1.利用  CreateMutexCreateMutex(nil, false, project);  result := true;  if GetLastError = ERROR_ALREADY...
  • nhczp
  • nhczp
  • 2007年01月20日 16:29
  • 1262

C#中判断某软件是否已安装

 private void button1_Click(object sender, EventArgs e)    {        if (checkAdobeReader() == t...
  • proglovercn
  • proglovercn
  • 2015年01月15日 04:51
  • 2636

Delphi 中实现判断某个外部程序是否运行(如果运行则执行一个命令否则执行一个命令)

前段时间在写一个工具型小软件时需要实现“在触发某个控件的一个事件时,判断某个外部程序(exe)是否已经运行,如果运行则将该程序主窗体打开或窗口置顶,如果没有运行,就通过一个自己指定的路径打开该应用程序...
  • xiaowei_sql
  • xiaowei_sql
  • 2016年03月23日 23:18
  • 2785

android判断应用是否已经启动

/** * 判断应用是否已经启动 * * @param context 上下文对象 * @param packageName 要判断应用的包名 * @return boolean ...
  • JayChan_95318
  • JayChan_95318
  • 2017年08月10日 10:12
  • 165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何检测系统是否已经运行了相同的程序。
举报原因:
原因补充:

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