الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع محددات سطر الأوامر Commandlineargs

بدأه محمد سامر أبو سلو في 12 يونيو 2008 · 1 رد · 846 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الخاصية CommandLineArgs

يمكننا التعامل مع محددات سطر الأوامر من خلال الخاصية CommandLineArgs التي تعيد مجموعة نصية للقراءة فقط ReadOnly Collection Of String تحتوي على محددات سطر الأوامر وتكون صيغتها العامة على الشكل

Public ReadOnly Property CommandLineArgs() As ReadOnlyCollection(Of String)

وهي متواجدة في المجمع Microsoft.VisualBasic.dll وضمن مجال الأسماء Microsoft.VisualBasic.ApplicationServices وهي بالنسبة لتطبيقات الكونسول ConsoleApplicationBase.CommandLineArgs وبالنسبة لتطبيقات الويندوز My.Application.CommandLineArgs

وتجدر ملاحظة أنه عند تشغيل عدة نسخ من التطبيق في آن واحد فإن هذه الخاصية تعيد القيم الخاصة بأول مرة تم تشغيل البرنامج فيها وللحصول على محددات سطر الأوامر للمرات التالية التي تم تشغيل البرنامج فيها علينا معالجة الحدث My.Application.StartupNextInstance وفحص الخاصية CommandLine العائدة لـ StartupEventArgs – وهنا أنصحك بمراجعة موضوعي أحداث التطبيق – وتجدر ملاحظة الاختلاف بين الخاصية CommandLineArgs التي تعيد محددات سطر الأوامر فقط والخاصية CommandLine التي تعيد سطر الأوامر التي تفذ من خلاله التطبيق كاملا بما فيه اسم الملف التنفيذي للتطبيق

وهذه الخاصية ليست متوفرة لجميع أنواع التطبيقات التي يمكنك إنشاؤها فهي متوفرة لأنواع التطبيقات التالية فقط Windows Application و Console Application و Windows Service فقط وقد تحتاج في بعض الحالات للفئة EnvironmentPermission من أجل الحصول على الصلاحيات الكافية لقراءة محددات سطر الأوامر من خلال هذه الخاصية وربما سأقوم مستقبلا بعمل موضوع مستقل عن الفئة EnvironmentPermission

أمثلة عن الاستخدام

إذا أردنا معالجة محدد ما المفترض أن يمرر عبر سطر الأوامر /input= مثلا يمكننا استخدام الكود التالي لإظهار بقية القيمة الممررة

Private Sub ParseCommandLineArgs()
	Dim inputArgument As String = "/input="
	Dim inputName As String = ""

	For Each s As String In My.Application.CommandLineArgs
		If s.ToLower.StartsWith(inputArgument) Then
			inputName = s.Remove(0, inputArgument.Length)
		End If
	Next

	If inputName = "" Then
		MsgBox("No input name")
	Else
		MsgBox("Input name: " & inputName)
	End If
End Sub

أو يمكننا عمل إجراء لمعالجة عدة محددات لسطر الأوامر

For Each cr In My.Application.CommandLineArgs
	HandleArgs(cr.ToUpper)
Next

Private Sub HandleArgs(ByVal carg As String)
	Select Case carg
		Case "/S"
			' معالجة المحدد /S

		Case "/T"
			' معالجة المحدد /T
		Case Else
			' معالجة أي محدد آخر

	End Select
End Sub

وفي حالة تشغيل عدة نسخ من التطبيق في آن واحد هذا مثال عن معالجة الحدث StartupNextInstance حيث يمكننا الوصول للحدث من خلال فتح خصائص My Project ومن صفحة Application اضغط الزر View Application Events لينقلك لمحرر الكود المناسب

Private Sub MyApplication_StartupNextInstance( _
	ByVal sender As Object, _
	ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs _
	) Handles Me.StartupNextInstance

	Dim inputArgument As String = "/input="
	Dim inputName As String = ""

	For Each s As String In e.CommandLine
		If s.ToLower.StartsWith(inputArgument) Then
			inputName = s.Remove(0, inputArgument.Length)
		End If
	Next

	If inputName = "" Then
		MsgBox("No input name")
	Else
		MsgBox("Input name: " & inputName)
	End If
End Sub

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

توجد ملاحظة بسيطة

وردت معلومة منقوصة سهوا في الموضوع في النقطة

اقتباس
وتجدر ملاحظة أنه عند تشغيل عدة نسخ من التطبيق في آن واحد فإن هذه الخاصية تعيد القيم الخاصة بأول مرة تم تشغيل البرنامج فيها وللحصول على محددات سطر الأوامر للمرات التالية التي تم تشغيل البرنامج فيها علينا معالجة الحدث My.Application.StartupNextInstance وفحص الخاصية CommandLine العائدة لـ StartupEventArgs

وهي أن هذه الملاحظة خاصة بالبرنامج وحيد التواجد Single Instance Application أي البرنامج المفترض تشغيل نسخة واحدة فقط منه

وبالمناسبة نحن نقوم بعمل برنامج وحيد التواجد بوضع إشارة في المربع بجانب Make Single Instance Appliocation في صفحة Application في خصائص My Project

تساؤل صغير: 19 قراءة للموضوع حتى الآن ولم يرد أي تساؤل حتى الآن حول هذه النقطة!!!

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 13 يونيو 2008 في 08:13

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

مواضيع مشابهة