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

نام تاپیک: چک کردن در حال اجرا بودن یک Process

  1. #1

    چک کردن در حال اجرا بودن یک Process

    سلام
    یه مشکل داشتم
    میخوام تو برنامه با زدن یک دکمه یک فایلexe اجرا بشه و برنامه دائم چک کنه که این فایل exe درحال اجرا هست و بعداز اینکه فایل exe بسته شد . یک فایل exe دیگه اجرا بشه
    با تشکر

  2. #2

    نقل قول: چک کردن در حال اجرا بودن یک Process

    خوب از کلاس process استفاده کن

  3. #3
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: چک کردن در حال اجرا بودن یک Process

    همین الان نوشتم. ببینید مشکلتون حل میشه یا نه

    private bool ProcessExists(string name)
    {
    return Process.GetProcesses().Any(x => x.ProcessName == name);
    }

    private void button7_Click(object sender, EventArgs e)
    {
    if (ProcessExists("wmplayer"))
    {
    MessageBox.Show("Media player is running");

    }
    else
    {
    if (!ProcessExists("wmplayer"))
    {
    System.Diagnostics.Process.Start(@"C:\Program Files\Zoom Player\zplayer.exe");

    }
    }
    }

  4. #4

    نقل قول: چک کردن در حال اجرا بودن یک Process

    سلام
    دست شما درد نکنه ولی مشکلم حل نشد
    ببین من میخوام که با زدن یک دکمه یه برنامه مثلا ali.exe اجرا بشه در همین موقع تو برنامه اصلی چک کنه که برنامه باز هست یا نه و هنگامی که برنامه ali.exe بسته بشه یک پیغام بده

    با تشکر

  5. #5
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: چک کردن در حال اجرا بودن یک Process

    برنامشو اونطور که میخواستید نوشتم. فقط جای مدیاپلیر آدرس همون برنامه (مثلا ali.exe) رو بهش بدید. برنامه هر 5 ثانیه چک میکنه اگه برنامه مورد نظر بسته شده باشه پیغام میده.
    فایل های ضمیمه فایل های ضمیمه

  6. #6

    نقل قول: چک کردن در حال اجرا بودن یک Process

    ببین من میخوام که با زدن یک دکمه یه برنامه مثلا ali.exe اجرا بشه در همین موقع تو برنامه اصلی چک کنه که برنامه باز هست یا نه و هنگامی که برنامه ali.exe بسته بشه یک پیغام بده
    می تونید یک هندل از process در حال اجرای مد نظر خودتان به دست بیارید؛ اگر process را خودتان اجرا نکردید، با استفاده از تابع OpenProcess می تونید این هندل را به دست بیارید. اگر process را خودتان اجرا می کنید، تابع CreateProcess خودش یک هندل بهتون برگشت میده؛ اون وقت می تونید از این هندل برگشتی در تابع WaitForSingleObject ویندوز استفاده کنید، تا برنامه شما تا زمان اتمام کار اون process منتظر باقی بمونه. اگر نمیخواید کل برنامه شما منتظر اتمام کار اون Process باقی بمونه، می تونید WaitForSingleObject رو در یک Thread جداگانه فراخوانی کنید. به این ترتیب، نیازی به چک کردن پیوسته وجود یا عدم وجود اون process نیست، و توان پردازشی CPU هم برای همچین چکی تلف نمیشه.

    این توابعی که نام بردم، توابع API ویندوز هستند، می تونید ازشون در دات نت به صورت کد unmanaged استفاده کنید. البته ممکنه معادل هایی هم در دات نت فریم ورک داشته باشند؛ من از دات نت استفاده نمی کنم، و اطلاعی از معادل های موجود این توابع ندارم، اما روش کار مد نظر شما در ویندوز به همین شکلی هست که گفتم. براش هم می تونید انواع نمونه کد به زبان های ++C\C یا دلفی و غیره پیدا کنید (احتمالا نمونه #C اش هم موجوده). می تونید عبارتی مثل Create process and wait را در اینترنت جستجو کنید.


    Update:

    این هم نمونه کد #C با استفاده از کلاس Process موجود در دات نت فریم ورک:
    http://support.microsoft.com/kb/305369


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  7. #7

    نقل قول: چک کردن در حال اجرا بودن یک Process

    با سلام
    دست شما دوستان درد نکنه . مشکل حل شد خیلی خیلی ممنون.

  8. #8

    نقل قول: چک کردن در حال اجرا بودن یک Process

    سلام
    تو .NET از WaitForExit استفاده کن

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

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