通过Process使应用程序在一台电脑上只能有一个在运行
2012-11-30 15:32
330 查看
废话少说直接上代码了:
#region 只允许一台主机上运行一个应用程序 private const int WS_SHOWNORMAL = 1; [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); /// <summary> /// 获取当前是否具有相同进程。 /// </summary> /// <returns></returns> public static Process GetRunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); //遍历正在有相同名字运行的例程 foreach (Process process in processes) { //忽略现有的例程 if (process.Id != current.Id) //确保例程从EXE文件运行 if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) return process; } return null; } /// <summary> /// 激活原有的进程。 /// </summary> /// <param name="instance"></param> public static void HandleRunningInstance(Process instance) { ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); SetForegroundWindow(instance.MainWindowHandle); } #endregion*/ 使用方法如下: /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { //Process instance = GetRunningInstance(); //if (instance == null) //{ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }//else { // SMSMsgBox.ShowMessage(" 您的程序已经在运行了!!"); //}
相关文章推荐
- c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)
- 问题记录:同一台电脑上,两台Tomcat运行同样的webapp项目,只能一个启动成功
- winform 中怎样实现一个程序只能在一台计算机上运行
- c#实现一个程序在一台电脑上只运行一个实例
- 一台机器只能运行一个程序
- 再谈应用程序单例运行(只能开启一个进程)
- 限制同一台机器上只能运行一个实体(.NET中VB语言)
- 通过docker run 命令来在容器内运行一个应用程序 输出Hello world
- 如何通过一台电脑黑掉一个国家?
- 如何用Qt写一个同一时间只能运行一个实例的应用程序
- 如何用Qt写一个同一时间只能运行一个实例的应用程序
- VC 设置应用程序只能运行一个实例
- C#编写Windows桌面应用程序使程序同时只能运行一个副本
- 一台电脑只能启动一个客户端。——Mutex 类的简单运用
- 使应用程序只能运行一个实例
- MFC开发技巧——应用程序只能运行一个实例
- 应用程序每次只能运行一个实例(C#)
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
- 老男孩视频纠错:一台电脑只能与biadu建立一个tcp链接
- 禁止一个应用程序的实例在同一台机器上运行多个(C#源码)