دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل printPreviewDialog در سی شارپ
1404/07/09 -
Storage در SQL Server
1404/07/09 -
کنترل printPreviewControl در سی شارپ
1404/07/08 -
Service Broker در SQL Server
1404/07/08 -
کنترل radioButton در سی شارپ
1404/07/07 -
System View در SQL Server
1404/07/07
کنترل process در سی شارپ

کنترل Process در سیشارپ
در دنیای برنامهنویسی، مدیریت پردازشها (Processes) یکی از مهمترین نیازها برای توسعهدهندگان است.
گاهی اوقات لازم است از داخل برنامهی خود نرمافزار دیگری را اجرا کنید، اطلاعاتی درباره پردازشهای در حال اجرا به دست آورید، یا حتی پردازشهای غیرضروری را متوقف کنید.
در سیشارپ و محیط .NET، این کارها با استفاده از کلاس Process انجام میشود.
کلاس Process در فضای نام System.Diagnostics قرار دارد و مجموعهای از متدها و ویژگیها را برای اجرای برنامهها، مدیریت پردازشها، دریافت اطلاعات وضعیت و کنترل چرخهی اجرای آنها در اختیار ما قرار میدهد.
مفهوم Process در سیشارپ
Process در دنیای سیستمعامل به معنای یک نمونه از برنامهی در حال اجرا است.
بهطور مثال اگر شما نرمافزار Notepad را سه بار باز کنید، سه پردازش (Process) مجزا در حافظه فعال میشوند.
هر Process شامل منابعی مانند حافظه، فایلهای باز، و یک یا چند رشته (Thread) اجرایی است.
در سیشارپ، کلاس System.Diagnostics.Process به شما اجازه میدهد:
- یک برنامه یا فایل را اجرا کنید.
- اطلاعات دقیقی از پردازشهای در حال اجرا بگیرید (مانند شناسه پردازش، میزان استفاده از حافظه، زمان شروع و غیره).
- پردازشها را متوقف یا پایان دهید.
- دادههای ورودی یا خروجی پردازشها را بخوانید یا ارسال کنید.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
کاربرد کنترل process در سی شارپ
-
اجرای نرمافزارهای خارجی از درون برنامه (مثلاً باز کردن Word یا Excel).
-
باز کردن آدرسهای اینترنتی با مرورگر پیشفرض.
-
گرفتن لیست پردازشهای فعال روی سیستم.
-
بستن یا ریستارت کردن برنامههای خاص.
-
اجرای دستورات خط فرمان (Command Prompt).
-
فضای نام مورد استفاده
برای کار با پردازشها باید فضای نام زیر را اضافه کنید:
using System.Diagnostics;
ایجاد Process در فرم (اجرای یک برنامه ساده)
یک مثال ساده اجرای Notepad از طریق برنامه:
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace ProcessExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
Button btnRun = new Button();
btnRun.Text = "اجرای Notepad";
btnRun.Click += BtnRun_Click;
Controls.Add(btnRun);
}
private void BtnRun_Click(object sender, EventArgs e)
{
Process.Start("notepad.exe");
}
}
}
در این مثال، با کلیک روی دکمه، نرمافزار Notepad اجرا میشود.
اجرای فایلها یا آدرسها با Process
کلاس Process علاوه بر اجرای نرمافزارها، میتواند فایلها و حتی آدرسهای اینترنتی را با برنامهی پیشفرض سیستم باز کند.
باز کردن یک فایل متنی:
Process.Start("example.txt");
اگر در سیستم یک ویرایشگر متن پیشفرض وجود داشته باشد (مثل Notepad)، فایل باز میشود.
باز کردن یک وبسایت:
Process.Start("https://www.google.com");
این دستور آدرس وب را در مرورگر پیشفرض سیستم باز میکند.
استفاده از ProcessStartInfo برای تنظیمات پیشرفته
گاهی اوقات نیاز دارید کنترل بیشتری روی اجرای پردازش داشته باشید، مثلاً مشخص کنید در چه پوشهای اجرا شود یا چه آرگومانهایی به آن داده شود.
برای این کار از ProcessStartInfo استفاده میشود.
مثال: اجرای Notepad با باز کردن فایل خاص
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.Arguments = "example.txt"; // باز کردن فایل همراه برنامه
Process.Start(startInfo);
مثال: اجرای Command Prompt و اجرای دستور
ProcessStartInfo cmdInfo = new ProcessStartInfo("cmd.exe", "/c dir");
cmdInfo.RedirectStandardOutput = true;
cmdInfo.UseShellExecute = false;
cmdInfo.CreateNoWindow = true;
Process cmd = Process.Start(cmdInfo);
string output = cmd.StandardOutput.ReadToEnd();
MessageBox.Show(output);
دریافت لیست پردازشهای در حال اجرا
شما میتوانید لیست همه پردازشهای فعال روی سیستم را با متد Process.GetProcesses() به دست آورید:
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
Console.WriteLine($"نام: {p.ProcessName}, ID: {p.Id}");
}
این کد نام و شناسهی (ID) همه پردازشهای فعال را چاپ میکند.
پایان دادن به یک پردازش
برای بستن یک پردازش خاص میتوان از متد Kill() استفاده کرد.
مثال: بستن Notepad
Process[] notepads = Process.GetProcessesByName("notepad");
foreach (Process p in notepads)
{
p.Kill();
}
این کد همه پنجرههای Notepad باز را میبندد.
یک مثال کاربردی در Windows Forms
بیایید یک فرم ساده طراحی کنیم که شامل سه دکمه باشد:
- اجرای Notepad
- نمایش لیست پردازشها
- بستن Notepad
کد کامل:
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace ProcessApp
{
public class MainForm : Form
{
private Button btnRun;
private Button btnList;
private Button btnKill;
public MainForm()
{
this.Text = "مدیریت پردازشها در سیشارپ";
this.Size = new System.Drawing.Size(400, 200);
btnRun = new Button() { Text = "اجرای Notepad", Left = 30, Top = 30, Width = 120 };
btnList = new Button() { Text = "لیست پردازشها", Left = 160, Top = 30, Width = 120 };
btnKill = new Button() { Text = "بستن Notepad", Left = 290, Top = 30, Width = 120 };
btnRun.Click += BtnRun_Click;
btnList.Click += BtnList_Click;
btnKill.Click += BtnKill_Click;
this.Controls.Add(btnRun);
this.Controls.Add(btnList);
this.Controls.Add(btnKill);
}
private void BtnRun_Click(object sender, EventArgs e)
{
Process.Start("notepad.exe");
}
private void BtnList_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcesses();
string list = "";
foreach (Process p in processes)
{
list += $"{p.ProcessName} - ID: {p.Id}\n";
}
MessageBox.Show(list, "لیست پردازشها");
}
private void BtnKill_Click(object sender, EventArgs e)
{
Process[] notepads = Process.GetProcessesByName("notepad");
foreach (Process p in notepads)
{
p.Kill();
}
MessageBox.Show("همه پردازشهای Notepad بسته شدند.");
}
}
}
ویژگیهای مهم کلاس Process در سی شارپ
-
Id
شناسه پردازش. -
ProcessName
نام پردازش. -
StartTime
زمان شروع پردازش. -
TotalProcessorTime
مقدار استفاده از CPU. -
WorkingSet64
میزان حافظه استفاده شده توسط پردازش. -
()Kill
پایان دادن به پردازش. -
()WaitForExit
منتظر ماندن تا پردازش پایان یابد.
اجرای برنامهها با دسترسی ادمین
گاهی اوقات نیاز دارید برنامهای را با دسترسی مدیر (Administrator) اجرا کنید. برای این کار در ProcessStartInfo خاصیت Verb روی "runas" قرار میگیرد:
ProcessStartInfo info = new ProcessStartInfo("notepad.exe");
info.Verb = "runas"; // اجرا با دسترسی ادمین
Process.Start(info);
مزایا و معایب استفاده از Process در سی شارپ
-
مزایا
- امکان اجرای هر نرمافزار یا دستور از داخل برنامه.
- مدیریت کامل روی پردازشهای فعال.
- دسترسی به اطلاعات سیستم و منابع.
- مناسب برای برنامههای سیستمی و مدیریتی.
-
معایب
- نیاز به دقت بالا؛ استفاده اشتباه از Kill ممکن است به سیستم آسیب بزند.
- برخی دستورات نیاز به دسترسی ادمین دارند.
- وابستگی به سیستمعامل (این کلاس مخصوص ویندوز است).
جمعبندی
کلاس Process در سیشارپ ابزاری قدرتمند برای مدیریت پردازشهاست.
با استفاده از آن میتوانید برنامههای خارجی را اجرا کنید، فایلها و وبسایتها را باز کنید، اطلاعات مربوط به پردازشهای فعال را دریافت کنید و حتی پردازشها را متوقف کنید.
برای استفاده در فرمهای ویندوزی کافی است:
کنترلها و دکمههای مناسب روی فرم قرار دهید.
از متدهای Process.Start برای اجرا و Process.Kill برای بستن استفاده کنید.
در صورت نیاز از ProcessStartInfo برای تنظیمات پیشرفتهتر بهره ببرید.
این قابلیت نه تنها در پروژههای آموزشی بلکه در نرمافزارهای کاربردی و مدیریتی سیستم نیز بسیار ارزشمند است.
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.