Parsi Coders

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

            }

        }

    }

}