限制Win应用程序只运行一个实例
2007-05-29 15:18
169 查看
限制Win应用程序只运行一个实例
1、 限制Win应用程序只运行一个实例
bool bCreatedNew;
Mutex Mab = new Mutex(false, "AuctionBidMain", out bCreatedNew);
if (bCreatedNew)
{
Application.Run(new AuctionBidMainForm());
}
else
{
Application.Exit();
}
2、限制Win应用程序只运行一个实例,并且显示已运行的实例
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
namespace AuctionBidMain
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
[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;
static void Main()
{
Process instance = RunningInstance();
if(instance==null)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new AuctionBidMainForm());
}
else
{
HandleRunningInstance(instance);
}
}
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);
}
}
}
1、 限制Win应用程序只运行一个实例
bool bCreatedNew;
Mutex Mab = new Mutex(false, "AuctionBidMain", out bCreatedNew);
if (bCreatedNew)
{
Application.Run(new AuctionBidMainForm());
}
else
{
Application.Exit();
}
2、限制Win应用程序只运行一个实例,并且显示已运行的实例
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
namespace AuctionBidMain
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
[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;
static void Main()
{
Process instance = RunningInstance();
if(instance==null)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new AuctionBidMainForm());
}
else
{
HandleRunningInstance(instance);
}
}
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#让应用程序只有一个实例在运行
- C#让应用程序只运行一个实例的几种方法
- 如何确保只有一个应用程序实例在运行?
- Qt应用程序只运行一个实例
- 应用程序只运行一个实例
- WaitForMultipleObjects和Event配合使用,限制程序运行一个实例
- Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接
- 如何让应用程序只有一个实例运行
- 使应用程序只能运行一个实例
- 如何使应用程序只运行一个实例
- 如何让应用程序只有一个实例在运行?
- 如何使应用程序只运行一个实例
- 让应用程序只有一个实例运行
- 用C#给程序加启动画面并只允许一个应用程序实例运行
- 简单的方法让一个应用程序只运行一个实例
- 让应用程序只运行一个实例的代码 [C#、Window]
- VC 设置应用程序只能运行一个实例
- VC保证应用程序只有一个实例在运行
- C#只允许运行应用程序的一个实例的正确写法