کلاس Proccess

از کلاس Proccess برای اجرای یک برنامه خارجی (مثلا برنامه هایی که بر روی سیستم عامل نصب هستند) استفاده می شود. این کلاس از متد ()Start برای برای این کار استفاده می کند. برای استفاده از این کلاس ابتدا باید فضای نام زیر را وارد برنامه کنید :

using System.Diagnostics;

برای آشنایی با کاربرد این کلاس یک برنامه ویندوزی ایجاد کنید. سپس کدهای آن را پاک کرده کدهای زیر را در داخل آن بنویسید :

using System.Diagnostics;

namespace ProcessClassDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Process.Start("C://");
        }
    }
}

همانطور که در کد بالا مشاهده می کنید، متد()Start دارای سربارگذاری های مختلفی است که در یکی از این حالت ها، این متد یک آرگومان از نوع رشته قبول می کند. در این کد ما رشته //:C را نوشته ایم. با اجرای برنامه فوق پنجره Windows Explorer باز شده و درایو :C نمایش داده می شود. با استفاده از این متد می توانیم یک فایل را با برنامه های پیشفرض، نمایش دهیم. به عنوان مثال یک فایل متنی در حالت عادی و به صورت پیشفرض با برنامه NotePad ویندوز اجرا و باز می شوند. در نتیجه اگر به عنوان مثال یک فایل با نام Example.txt در داخل درایو C داشته باشید و بخواهید آن را اجرا و باز کنید می توانید از کد زیر استفاده کنید :

Process.Start("C://Example.txt");

به این نکته مهم توجه کنید که فایل ها با برنامه هایی که شما از آنها به صورت پیشفرض تعیین کرده اید باز می شوند. مثلا اگر شما در ویندوز برنامه Word را برنامه پیشفرض برای باز کردن فایل های متنی تنظیم کرده باشید در نتیجه فایل Example.txt به وسیله برنامه Word باز می شود. همانطور که می دانید برای باز کردن یک صفحه اینترنتی آدرس آن را در داخل مرورگر که ممکن است Firefox ،Google Chrome و یا Internet Explorer باشد، می نویسیم و دکمه Enter را می زنیم تا صفحه باز شود. حال می خواهیم یک متد بنویسیم که با اجرای آن یک صفحه اینترنتی باز شود. کدهای قبلی را پاک کرده و کدهای زیر را بنویسید :

using System.Diagnostics;

namespace ProcessClassDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Process.Start("http://google.com/search?q= Andres heilsberg");
        }
    }
}

همانطور که در کد بالا مشاهده می کنید، این بار رشته ای که به متد ()Start ارسال کرده ایم، یک آدرس اینترنتی است. با اجرای برنامه این آدرس توسط مرورگر پیشفرض تان باز می شود. البته با استفاده از یکی دیگر از سربارگذاری ها یان متد می توان به متد اعلام کرد که فایل مورد نظرتان را با برنامه ای که مد نظرتان است باز کند. مثلا اگر بخواهید همین آدرس بالا را با برنامه Internet Explorer باز کنید می توانید نام فایل با پسوند EXE مرورگر را به صورت زیر بنویسید :

Process.Start("IExplore.exe","http://google.com/search?q= Andres heilsberg");

یکی دیگر از سربارگذاری های متد ()Start یک نمونه از کلاس ProcessStartInfo را به عنوان آرگومان دریافت می کند. این کلاس دارای خواصی در مورد جزییات فایل، نحوه اجرای آن و برنامه ای که قرار است فایل را اجرا کند، می باشد. به کد زیر توجه کنید :

using System.Diagnostics;

namespace ProcessClassDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();           
            startInfo.Arguments = "C://WordExample.docx";
            startInfo.FileName = "WINWORD.EXE";

            Process.Start(startInfo);
        }
    }
}

در کد بالا ابتدا یک نمونه از کلاس ProcessStartInfo ایجاد کرده ایم. سپس مسیر فایلی که می خواهیم باز شود و برنامه ای که قرار است آن را باز کند، را با استفاده از خاصیت های Arguments و FileName مشخص می کنیم. در نهایت شیء ایجاد شده از کلاس ProcessStartInfo را به عنوان پارامتر به متد ()Start ارسال می کنیم. ممکن است که این سوال برایتان پیش آمده باشد که چرا به جای کلمه Word.exe از WINWORD.EXE استفاده شده است و کلا چگونه اسم نرم افزاری که قرار است فایل مورد نظر ما را اجرا کند به دست بیاوریم؟ برای این کار به مسیر نصب نرم افزار رفته و فایل با پسوند EXE آن را پیدا کنید. مثلا مسیر و نام فایل اجرایی برنامه WORD به صورت زیر است :
proccess-class-in-c#-01
همانطور که در شکل بالا مشاهده می کنید فایل WORD ما در مسیر زیر قرار دارد و ممکن است که این مسیر برای شما متفاوت باشد :

C:\Program Files (x86)\Microsoft Office\Office15