Parsi Coders
اجرای فقط یک کپی از برنامه - نسخه قابل چاپ

+- Parsi Coders (http://parsicoders.com)
+-- انجمن: Software Development Programming (http://parsicoders.com/forumdisplay.php?fid=37)
+--- انجمن: C# Programming (http://parsicoders.com/forumdisplay.php?fid=55)
+--- موضوع: اجرای فقط یک کپی از برنامه (/showthread.php?tid=1170)



اجرای فقط یک کپی از برنامه - Ghoghnus - 10-31-2011

این دستور چک می کند اگر هیچ برنامه ای از نوع برنامه فراخوانی شده در حال اجرا نباشد ، برنامه اجرا می شود.
کد:
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());

            }

        }

    }

}