سلام
یه مشکل داشتم
میخوام تو برنامه با زدن یک دکمه یک فایلexe اجرا بشه و برنامه دائم چک کنه که این فایل exe درحال اجرا هست و بعداز اینکه فایل exe بسته شد . یک فایل exe دیگه اجرا بشه
با تشکر
سلام
یه مشکل داشتم
میخوام تو برنامه با زدن یک دکمه یک فایلexe اجرا بشه و برنامه دائم چک کنه که این فایل exe درحال اجرا هست و بعداز اینکه فایل exe بسته شد . یک فایل exe دیگه اجرا بشه
با تشکر
خوب از کلاس 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");
}
}
}
سلام
دست شما درد نکنه ولی مشکلم حل نشد
ببین من میخوام که با زدن یک دکمه یه برنامه مثلا ali.exe اجرا بشه در همین موقع تو برنامه اصلی چک کنه که برنامه باز هست یا نه و هنگامی که برنامه ali.exe بسته بشه یک پیغام بده
با تشکر
برنامشو اونطور که میخواستید نوشتم. فقط جای مدیاپلیر آدرس همون برنامه (مثلا ali.exe) رو بهش بدید. برنامه هر 5 ثانیه چک میکنه اگه برنامه مورد نظر بسته شده باشه پیغام میده.
می تونید یک هندل از process در حال اجرای مد نظر خودتان به دست بیارید؛ اگر process را خودتان اجرا نکردید، با استفاده از تابع OpenProcess می تونید این هندل را به دست بیارید. اگر process را خودتان اجرا می کنید، تابع CreateProcess خودش یک هندل بهتون برگشت میده؛ اون وقت می تونید از این هندل برگشتی در تابع WaitForSingleObject ویندوز استفاده کنید، تا برنامه شما تا زمان اتمام کار اون process منتظر باقی بمونه. اگر نمیخواید کل برنامه شما منتظر اتمام کار اون Process باقی بمونه، می تونید WaitForSingleObject رو در یک Thread جداگانه فراخوانی کنید. به این ترتیب، نیازی به چک کردن پیوسته وجود یا عدم وجود اون process نیست، و توان پردازشی CPU هم برای همچین چکی تلف نمیشه.ببین من میخوام که با زدن یک دکمه یه برنامه مثلا ali.exe اجرا بشه در همین موقع تو برنامه اصلی چک کنه که برنامه باز هست یا نه و هنگامی که برنامه ali.exe بسته بشه یک پیغام بده
این توابعی که نام بردم، توابع API ویندوز هستند، می تونید ازشون در دات نت به صورت کد unmanaged استفاده کنید. البته ممکنه معادل هایی هم در دات نت فریم ورک داشته باشند؛ من از دات نت استفاده نمی کنم، و اطلاعی از معادل های موجود این توابع ندارم، اما روش کار مد نظر شما در ویندوز به همین شکلی هست که گفتم. براش هم می تونید انواع نمونه کد به زبان های ++C\C یا دلفی و غیره پیدا کنید (احتمالا نمونه #C اش هم موجوده). می تونید عبارتی مثل Create process and wait را در اینترنت جستجو کنید.
Update:
این هم نمونه کد #C با استفاده از کلاس Process موجود در دات نت فریم ورک:
http://support.microsoft.com/kb/305369
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
با سلام
دست شما دوستان درد نکنه . مشکل حل شد خیلی خیلی ممنون.
سلام
تو .NET از WaitForExit استفاده کن