10-31-2011، 02:28 PM
این دستور چک می کند اگر هیچ برنامه ای از نوع برنامه فراخوانی شده در حال اجرا نباشد ، برنامه اجرا می شود.
کد:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
namespace SingleInstanceTest
{
static class Program
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
public static bool HasPriorInstance()
{
Process currentProcess = Process.GetCurrentProcess();
string fileName = currentProcess.StartInfo.FileName;
foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName))
{
if (process.Id == currentProcess.Id) { continue; }
if (process.StartInfo.FileName != fileName) { continue; }
SetForegroundWindow(process.MainWindowHandle);
return true;
}
return false;
}
[STAThread]
static void Main()
{
if (!HasPriorInstance())
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
}