View Full Version : kill a process
kiuhnmgtrdcv
دوشنبه 13 مهر 1388, 16:29 عصر
سلام
چطور میتونم به یه process توسط اسمش خاتمه بدم؟(مثلا notepad)
من به تابع Terminateprocess یه نگاهی کردم ولی نمیدونم چطور میشه میشه id یه پروسه مثل notepan پیدا کرد؟
kiuhnmgtrdcv
دوشنبه 13 مهر 1388, 19:41 عصر
این تابع منه
int CMyTaskManagerDlg::Killprocess(int nProcessID){ HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, nProcessID ); BOOL nReturnVal = TerminateProcess( hProcess,0); CloseHandle (hProcess); return nReturnVal; }
چطور میتونم id برنامه ای که میخواد بسته بشه پیدا کنم برای مثال notepad.exe
Nima_NF
دوشنبه 13 مهر 1388, 21:04 عصر
ID پروسه را می توانید با خواندن کامل پروسه های اجرا شده کنونی بدست آورید، به این شکل که با Process32First شروع به خواندن پروسه ها می کنید (در یک حلقه) و در هر مرحله با توجه به نام پروسه (مثلا notepad.exe) آن را تست می کنید (اطلاعات در struct که در آرگومان دوم قرار داده اید دریافت می شود که szExeFile برای نام فایل هست)، سپس با Process32Next همین طور چک کردن را ادامه می دهید تا به پروسه با نام مورد نظر برسید، هر گاه رسیدید th32ProcessID در همان struct شناسه مورد نظر را به شما می دهد.
مثال دریافت تمامی پروسه ها در این لینک (http://msdn.microsoft.com/en-us/library/ms686701%28VS.85%29.aspx)
تذکر: مقایسه رشته را با strcmp یا برای یونیکد با tcscmp_ انجام دهید.
m_zi
یک شنبه 19 مهر 1388, 11:59 صبح
سلام
من دقيقاً مشكل شما را دارم ولي از جوابي كه داده شد سر در نياوردم لطفاً اگه مشكل شما حل شده است من را هم راهنمايي كنيد.
ممنون
A_Salimi
یک شنبه 19 مهر 1388, 16:30 عصر
روش کامل انجام این کار در این لینک :
http://barnamenevis.org/forum/showpost.php?p=707483&postcount=21
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.