تنفيذ أوامر Ms-Dos في برامج C# & VB.Net


اليوم في هذا الدرس البسيط والسريع سنشرح كيف ننفذ تعليمة MS-Dos في موجه الأوامر مع رؤية الناتج ,, مما يمكننا من استخدام تعليمات dos المفيدة في برامجنا. بعد ما شرحنا في الدرس الماضي كيفية التعامل مع الكلاس Process والكلاس ProcessStartInfo , واستعرضنا أهم خصائص وتوابع هذين الكلاسين.
 


execute command prompt commands in c# and vb.net


  الشرح:


لتنفيذ امر في موجه الأوامر يجب اولاً تشغيل موجه الأوامر "cmd.exe" او "cmd" (لأنه موجود في مجلد system32).

ثم نأتي لأهم نقطة:

كي نرسل أمر إلى موجه الأوامر يجب ان نكتب هذا الأمر مع بارامترات أو معاملات التشغيل لموجه الأوامر أو "Arguments" .. ولذلك نكتب البارامتر ""/c  ثم بعده نكتب تعليمة الدوس التي نريد تنفيذها ,, وهذا مثال لتنفيذ تعليمة  "Dir":
cmd.exe /c dir 
الصورة التالية تعبر عن هذا الأمر (خصائص موجه الأوامر)


command prompt properties خصائص موجه الاومر


الأن لننتقل إلى الكود:


أولاً استيراد المكتبة Diagnostics لتنفيذ عملية تشغيل تعليمة دوس:
Imports System.Diagnostics
using System.Diagnostics;

 الأن نعرف متغير من نوع ProcessStartInfo وهذا الكائن يمكننا من تحديد بعض الخيارات والمعاملات التي تستخدم لبدء عملية تنفيذ تعليمة دوس:
Dim procInfo As ProcessStartInfo = New ProcessStartInfo("cmd")
ProcessStartInfo procInfo = new ProcessStartInfo("cmd");

طبعاً قمنا بتمرير اسم البرنامج والذي هو cmd لتشغيل موجه الأوامر.

بعد ذلك نمرر معاملات التشغيل Arguments:
procInfo.Arguments = "/c " & TextBox1.Text.Trim()
procInfo.Arguments = "/c " + TextBox1.Text.Trim();

من أجل عرض نتيجة تنفيذ الأمر نستخدم الخاصية التالية ونجعل قيمتها True:
procInfo.RedirectStandardOutput = True
procInfo.RedirectStandardOutput = true;

ومن اجل ان يتم نحصل على نتيجة التنفيذ يجب تعين قيمة False للخاصية التالية:
procInfo.UseShellExecute = False
procInfo.UseShellExecute = false;

الأن بقي ان نعرف متغير من نوع Process لتنفيذ عملية تشغيل موجه الأوامر:
Dim proc As Process = New Process()
Process proc = new Process();

ثم تحديد خيارات ومعاملات التشغيل لهذه العملية اي الكائن procInfo الذي عرفناه قبل قليل:
proc.StartInfo = procInfo
proc.StartInfo = procInfo;
الأن تنفيذ العملية:
proc.Start()
proc.Start();

لعرض نتيجة تنفيذ الكود نستخدم الخاصية  StandardOutputالتي تعود بالنتيجة على شكل StreamReader:
Dim result As String = proc.StandardOutput.ReadToEnd()
TextBox2.Text = result
String result = proc.StandardOutput.ReadToEnd();
TextBox2.Text = result;

  خيارات إضافية:


من أجل عدم عرض نافذة موجه الأوامر (النافذ السوداء) ,, نكتب التالي:
procInfo.CreateNoWindow = True
procInfo.CreateNoWindow = true;

مقدمة في العمليات Processes والكلاس Process


سنتناول في هذا الدرس شرح فئة Class مهمة جداً  في البرامج والتي هي Process أي "عملية" ,, التي تمكننا من تشغيل برنامج معين او أداة معينة من أدوات نظام التشغيل. والتحكم بالعمليات (إيقاف - تشغيل - تغيير الأفضلية) التي تعمل على الجهاز الحالي أو على جهاز آخر (Remote Processes).


  الفئة System.ProcessSystem.Process class:


الفئة Process توجد ضمن النطاق (Namespace) الذي هو System.Diagnostics, ما يلي شرح بسيط لأهم الخصائص والاجراءات التي توجد في الفئة (الكلاس) Process: