نصائح

كيفية استخدام Process.Start في Visual Basic

كيفية استخدام Process.Start في Visual Basic

ال بداية طريقة لل معالجة ربما يكون الكائن أحد أكثر الأدوات التي لا يقدرها أحد المتاحة للمبرمجين. كطريقة .NET ، بداية يحتوي على سلسلة من الأحمال الزائدة ، والتي هي مجموعات مختلفة من المعلمات التي تحدد بالضبط ما تفعله الطريقة. تتيح لك الأحمال الزائدة تحديد أي مجموعة من المعلمات التي قد ترغب في نقلها إلى عملية أخرى عندما تبدأ.

ما يمكنك القيام به مع Process.Start يقتصر فقط على العمليات التي يمكنك استخدامها معها. إذا كنت ترغب في عرض ملف ReadMe المستند إلى النص في برنامج "المفكرة" ، فسيكون ذلك سهلاً كما يلي:

Process.Start ( "README.TXT")أو

Process.Start ("المفكرة" ، "ReadMe.txt")

يفترض هذا المثال أن الملف التمهيدي موجود في نفس المجلد مثل البرنامج وأن برنامج "المفكرة" هو التطبيق الافتراضي لأنواع ملفات .txt ، وأنه موجود في مسار بيئة النظام.

Process.Start تشبه الأوامر Shell في VB6

للمبرمجين على دراية Visual Basic 6 ، Process.Start يشبه إلى حد ما VB 6 الصدف أمر. في VB 6 ، يمكنك استخدام شيء مثل:

lngPID = Shell ("MyTextFile.txt" ، vbNormalFocus)

باستخدام Process.Start

يمكنك استخدام هذا الرمز لبدء تشغيل برنامج "المفكرة" إلى أقصى حد وإنشاء ملف ProcessStartInfo الكائن الذي يمكنك استخدامه للتحكم أكثر دقة:

قاتمة ProcessProperties باسم جديد
ProcessProperties.FileName = "notepad"
ProcessProperties.Arguments = "myTextFile.txt"
ProcessProperties.WindowStyle = ProcessWindowStyle.Maximized
Dim myProcess As Process = Process.Start (ProcessProperties)

بدء عملية خفية

يمكنك حتى بدء عملية خفية.

ProcessProperties.WindowStyle = ProcessWindowStyle.Hiddenلكن كن حذرا. ما لم تقم بإضافة المزيد من التعليمات البرمجية لإنهاء العملية ، فربما يتعين عليك إنهائها في "إدارة المهام". عادةً ما يتم استخدام العمليات المخفية فقط مع العمليات التي لا تحتوي على أي نوع من واجهة المستخدم.

استرجاع اسم العملية

أعمل مع Process.Start ككائن .NET يمنحك الكثير من القدرة. على سبيل المثال ، يمكنك استرداد اسم العملية التي بدأت. سيعرض هذا الرمز "المفكرة" في نافذة الإخراج:

Dim myProcess As Process = Process.Start ("MyTextFile.txt") Console.WriteLine (myProcess.ProcessName)كان هذا شيء يمكن أن تفعله ليس تفعل مع VB6الصدف الأمر لأنه أطلق التطبيق الجديد بشكل غير متزامن. عن طريقWaitForExit يمكن أن يسبب المشكلة العكسية في .NET لأنه يجب عليك بدء عملية في سلسلة رسائل جديدة إذا كنت بحاجة إلى تنفيذها بشكل غير متزامن. على سبيل المثال ، إذا كنت بحاجة إلى أن تظل المكونات نشطة في نموذج تم فيه بدء العملية وWaitForExit تم اعدامه. عادة ، لن تكون هذه المكونات نشطة. رمز ذلك وانظر لنفسك.

طريقة واحدة لإجبار العملية على وقف استخدام قتل طريقة.

myProcess.Kill ()

ينتظر هذا الرمز لمدة عشر ثوانٍ ثم ينهي العملية.

ومع ذلك ، يكون التأخير القسري ضروريًا في بعض الأحيان للسماح للعملية بإكمال الخروج لتجنب حدوث خطأ.

myProcess.WaitForExit (10000)
إذا لم تكتمل العملية في الداخل
'10 ثانية ، اقتلها
إذا لم يكن myProcess.HasExited ثم
myProcess.Kill ()
إنهاء إذا
Threading.Thread.Sleep (1)
Console.WriteLine ("انتهت المفكرة:" _
& myProcess.ExitTime & _
البيئة.خط جديد & _
"كود الخروج:" & _
myProcess.ExitCode)

في معظم الحالات ، من المحتمل أن تضع المعالجة في فكرة جيدةعن طريق كتلة للتأكد من أن الموارد المستخدمة من قبل العملية يتم تحريرها.

استخدام myProcess كعملية = عملية جديدة
"رمزك يذهب هنا
نهاية استخدام

لجعل كل هذا أسهل في العمل مع ، هناك حتىمعالجة مكون يمكنك إضافته إلى مشروعك بحيث يمكنك القيام بالكثير من الأشياء الموضحة أعلاه في وقت التصميم بدلاً من وقت التشغيل.

أحد الأشياء التي يسهل ذلك الأمر هو ترميز الأحداث التي تثيرها العملية ، مثل الحدث عند خروج العملية. يمكنك أيضًا إضافة معالج باستخدام رمز مثل هذا:

السماح للعملية برفع الأحداث
myProcess.EnableRaisingEvents = صحيح
إضافة معالج حدث Exited
AddHandler myProcess.Exited ، _
AddressOf Me.ProcessExited
Process Subited Private Sub (مرسل ByVal ككائن ، _
ByVal e As System.EventArgs)
"رمزك يذهب هنا
نهاية الفرعية

ولكن ببساطة اختيار الحدث للمكون أسهل بكثير.