جلوگیری از باز شدن مجدد برنامه

این پروژه برای جلو گیری از باز شدن مجدد برنامه در برنامه های ویندوز اپلیکیشنی می باشد طوری که با هر بار کلیک روی آیکن برنامه برنامه برای چندین مرتبه باز نشود وقتی وارد cpu شد دیگر از باز شدن مجدد آن جلوگیری می کند تا ما از یک برنامه چندین اجرا نداشته باشیم و خوانایی برنامه به مشکل بخورد

کلاس اول برای جلوگیری از تعدد باز شدن به نام Run Already

کلاس دوم به نام ProcessIsRuning حالت چک دارد که برسی اجمالی را انجام می دهد .

Program.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Tirage.MainStand
    {
    static class Program
    {

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            PublicClass.Class.RunAlready RunAPP = new PublicClass.Class.RunAlready();
            string outApp = RunAPP.processIsRunning("Tirage.MainStand");
           
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            MainStand_FrmLogin fLogin = new MainStand_FrmLogin();
            if (outApp.Length == 0)
            {
                
                if (fLogin.ShowDialog() == DialogResult.OK)
                {
                    Application.Run(new MainStand_masterFrm());
                 
                }
            }
            else MessageBox.Show( "Instance already running");

          }
        }
     }

 

class RunAlready:
===================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PublicClass.Class
{
public  class RunAlready
{
public  string processIsRunning(string process)
{
string xdescription = "";
System.Diagnostics.Process[] processes =
System.Diagnostics.Process.GetProcessesByName(process);
foreach (System.Diagnostics.Process proc in processes)
{
var iddd = System.Diagnostics.Process.GetCurrentProcess().Id;
if (proc.Id != System.Diagnostics.Process.GetCurrentProcess().Id)
{
xdescription = "Application Run At time:" + proc.StartTime.ToString() + System.Environment.NewLine;
xdescription += "Current physical memory : " + proc.WorkingSet64.ToString() + System.Environment.NewLine;
xdescription += "Total processor time : " + proc.TotalProcessorTime.ToString() + System.Environment.NewLine;
xdescription += "Virtual memory size : " +         proc.VirtualMemorySize64.ToString() + System.Environment.NewLine;
}
}

return xdescription;
}
}
}

منبع : https://stackoverflow.com/questions/2182385/how-to-check-already-running-exe-in-c-net/45137340#45137340

شاید این مطالب را هم دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.