نمایش نتایج 1 تا 7 از 7

نام تاپیک: فقط يكبار اجرا شدن برنامه Check Instance Of App

  1. #1
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    839

    فقط يكبار اجرا شدن برنامه Check Instance Of App

    دوستان لطفا كد Check Instance Of App را براي يكبار اجرا شدن برنامه را قرار دهيد . هر كار كردم نتونستم بنويسم


  2. #2
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    35
    پست
    221

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    سلام
    کدهای زیر را باید در کلاس StartUp برنامه اعمال کرد:
    using System.Diagnostics;

    static class Program
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
    if (IsPrevInstance())
    return;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);
    Application.Run(new Form1());
    }
    private static bool IsPrevInstance()
    {
    string processName = Process.GetCurrentProcess().ProcessName;
    Process[] instances = Process.GetProcessesByName(processName);
    if (instances.Length > 1)
    return true;
    else
    return false;
    }
    }


    وقتی که برنامه اجرا می شه در اولین مرحله تابع ()IsPrevInstance لیست پردازشهای CPU رو بررسی می کنه، اگه برنامه در حال اجرا بود، بلافاصله پردازش اون رو متوقف می کنه تا کاربر با نسخه در حال اجرا به کار خود ادامه بده.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    123

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    بهتر است بعد از ایجاد اولین instance از برنامه process های ایجاد شده بعدی را از بین ببریم و instance اصلی را فعال کنیم، با این کار با هر بار اجرای جدید برنامه برنامه اصلی به پنجره فعال تبدیل خواهد شد:


    static class Program
    {
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetForegroundWindow(IntPtr hWnd);

    ///<summary>
    /// The main entry point for the application.
    ///</summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    //use Mutex to prevent multi instances of the program
    System.Threading.Mutex mutex = null;
    bool owned = false;

    try
    {
    mutex = new System.Threading.Mutex(true, Assembly.GetExecutingAssembly().FullName, out owned);
    if (!owned)
    {
    Process current = Process.GetCurrentProcess();
    foreach (Process process in Process.GetProcessesByName(current.ProcessName))
    {
    if (process.Id != current.Id)
    {
    SetForegroundWindow(process.MainWindowHandle);
    break;
    }
    }

    Process.GetCurrentProcess().Kill();
    }
    }
    catch (Exception ex)
    {
    }
    finally
    {
    if (mutex != null && owned)
    mutex.ReleaseMutex();
    }

    Application.Run(new Form1());
    }
    }

  4. #4
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    839

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    جناب وقتي كد شما را اعمل مي كنم اين ارور را ميدهد

    Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?) D:\source\PasswordKeeper\PasswordKeeper\Program.cs 11 10 PasswordKeeper

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    123

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    namespace های زیر را در برنامه use کنید:


    using
    System.Runtime.InteropServices;
    using System.Diagnostics;
    using System.Reflection;

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    1,025

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    چرا از Nutex استفاده نمیکنید
    در این صورت دیگه نیازی به گرفتن تمام Proccess ها نیست و خیلی سریع تره

  7. #7
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    123

    نقل قول: فقط يكبار اجرا شدن برنامه Check Instance Of App

    برای تست run بودن application از Mutex استفاده شد، process فقط برای active کردن application جاری است

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •