اليوم في هذا الدرس البسيط والسريع سنشرح كيف ننفذ
تعليمة MS-Dos في موجه الأوامر مع رؤية الناتج ,, مما يمكننا من
استخدام تعليمات dos المفيدة
في برامجنا. بعد ما شرحنا في الدرس الماضي كيفية التعامل مع الكلاس Process والكلاس
ProcessStartInfo
, واستعرضنا أهم خصائص
وتوابع هذين الكلاسين.
لتنفيذ امر في موجه الأوامر يجب اولاً تشغيل موجه الأوامر "cmd.exe" او "cmd" (لأنه موجود في مجلد system32).
ثم نأتي لأهم نقطة:
الشرح:
لتنفيذ امر في موجه الأوامر يجب اولاً تشغيل موجه الأوامر "cmd.exe" او "cmd" (لأنه موجود في مجلد system32).
ثم نأتي لأهم نقطة:
كي نرسل أمر إلى موجه الأوامر يجب ان نكتب هذا الأمر
مع بارامترات أو معاملات التشغيل لموجه الأوامر أو "Arguments" .. ولذلك نكتب البارامتر ""/c ثم
بعده نكتب تعليمة الدوس التي نريد تنفيذها ,, وهذا مثال لتنفيذ تعليمة "Dir":
cmd.exe /c dir
الصورة التالية تعبر عن هذا الأمر (خصائص موجه
الأوامر)
Imports System.Diagnostics
using System.Diagnostics;
الأن
نعرف متغير من نوع ProcessStartInfo
وهذا الكائن يمكننا من تحديد بعض الخيارات
والمعاملات التي تستخدم لبدء عملية تنفيذ تعليمة دوس:
Dim procInfo As ProcessStartInfo = New
ProcessStartInfo("cmd")
ProcessStartInfo procInfo = new ProcessStartInfo("cmd");
طبعاً قمنا بتمرير اسم البرنامج والذي هو cmd لتشغيل موجه الأوامر.
بعد ذلك نمرر معاملات التشغيل Arguments:
بعد ذلك نمرر معاملات التشغيل 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;