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

Dynamic Shellcommand

بدأه Moudey في 18 يوليو 2008 · 6 رد · 2,449 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

نبدأ بأذن الله مشروع القوائم المرنة "Dynamic ShellCommand"

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

حيث يتم استيراد عناصر القائمة من ملف menu.xml بطريقة ديناميكية.

وهذة هي بنية ملف menu.xml

<?xml version="1.0" ?>
<ShellCommand Author="Moudey">
	<Menu Type="Item" Text="Command Prompt" ToolTip="Command prompt heare" Command="cmd.exe" Arguments="cd '$Path$'" />
	<Menu Type="Seperator"/>
	<Menu Type="Item" Text="Edit by NotePad"  Hint="Edit selected item with NotePad."  CMD="notepad.exe" Args="$Path$" />
	<Menu Type="Seperator"/>
	<Menu Type="Popup" Text="Shell Command" ToolTip="Shell Command menu.">
		<Menu Type="Popup" Text="File Management" Hint="File Management">
			<Menu Type="Popup" Text="Regester Server" Hint="Controls registration of this ActiveX library.">
				<Menu Type="Item" Text="Regster" CMD="regsvr32.exe" Args="'$Path$'" />
				<Menu Type="Item" Text="Unregster" CMD="regsvr32.exe" Args="/u '$Path$'" />
			</Menu>
		</Menu>
		</Menu>
	</Menu>
	<Menu Type="Seperator"/>
</ShellCommand>

هذة الصورة توضح عمل المشروع

ShellCommand.jpg

المشروع في الرابط التاليShellCommand.zip

سأقوم بشرح المشروع ان شاء الله قريباً.

لتسجيل التطبيق يجب النقر علي ملف reg.cmd لكي يتم دمج التطبيق مع الويندوز.

تم تعديل هذه المشاركة بواسطة Moudey في 24 يوليو 2008 في 21:39

مواضيع متنوعة

#2

السلام عليكم و رحمة الله وبركاته

ماشاء الله عليك يا محمود :)

يبقى أن تشرح لنا كيف تترجم الأكواد بإستخدام ال Makefile

و لماذا تحبذ هذه الطريقة

#3

السلام عليكم,

فى الرابط التالى توضيح الدوال الرئيسية في المشروع.

Create Shell Extensions ContextMenu Handler

/index.php?showtopic=114720

اقتباس
يبقى أن تشرح لنا كيف تترجم الأكواد بإستخدام ال Makefile

و لماذا تحبذ هذه الطريقة

استخدم الباتش فايل او makefile عند عدم توفر بيئة التطوير احياناً.

وحتي اتمكن من ترجمة المشروع بأي اصدار من مترجم الـ #C بحيث اترجم المشروع بإصدار 1.1 او الاحدث.

وحيث ان الفيجوال استوديو لايوفر سوي الاصدار 2.0 او الاحدث فقط من الفريم ورك.

لست ملم جيداً بـ makefile ولكن سأحاول توضيح عملية الترجمة من خلالة ان شاء الله.

مواضيع متنوعة

#4

السلام عليكم,

يوجد خطأ في مسار ملف menu.xml ومع ذلك لم يعقب احد من الذين قامو بتحميل المشروع لاادري هل قامو بتجربة المشروع ام لا؟

ما علينا :

تصحيح وضع مسار ملف menu.xml هكذا

string xmlPath = string.Format("{0}\\menu.xml",
	// Get the current module.
	Path.GetDirectoryName(
		// this.GetType().Module.FullyQualifiedName
		// or
		Assembly.GetExecutingAssembly().Location));

حيث يتم اعادة مسار التطبيق من خلال دالة Assembly.GetExecutingAssembly().Location

وحيث ان الدالة السابقة في المرفقات كانت تعيد مسار مختلف تماماً عن الحالى.

مواضيع متنوعة

#5

أخى جميل جدا ما تفعلة ولكن كنت أريد طريقة وضع أيقونة فى قائمة السياق

كما تفعل برامج مثل win zip

بحثت حول هذا الموضوع ولكن كل ما وجدتة أدوات غير مفتوحة المصدر

فهل أجد عندك هذا الموضوع

وشكرا

تم تعديل هذه المشاركة بواسطة vbm في 13 أغسطس 2008 في 19:56

أصفق أو لا أصفق فخلفي كتلة شحم تصفق وبعض المساحيق كانت تصفق وجاري يصفق وأسأل .. هل أعجبته الرواية؟ يبحلق ثم يلكز جنبي ويمضي يصفق أصفق أو لا أصفق أمامي كل الرؤوس تصفق وخلفي كل الصفوف تصفق أتى مارد شدني من يدي وتساءل لم لا تصفق تصايح كل الحضور اطردوه تحسست عقلي اطردوه أفقت لنفسي طريداً طريد فصفقت حتى انقطاع الوريد حتى انقطاع الوريد أصفق من أجل ذاك الذي لايصفق

#6

نعم يمكن عمل هذا بكل سهولة عزيزي.

سوف يتم اضافة العديد من المهام والخصائص الاخرى ومنها اضافة ايقونة الي القائمة.

وإليك خاصية إضافة صورة او رمز الي القائمة.

فى إجراء PopulateMenuItem استبدل هذا الكود.

if(m.Type == MenuType.Seperator) {
	mii.fType = MFT.Separator;
} else {
	// Do not increment idCmd for separators!
	mii.dwTypeData = m.Text;
}

بهذا الكود.

if(m.Type == MenuType.Seperator) {
	mii.fType = MFT.Separator;
} else {
	// Do not increment idCmd for separators!
	mii.dwTypeData = m.Text;
	string imgPath = Path.GetFullPath(@"C:\image.png");
	if(File.Exists(imgPath)) {
		Bitmap img =  new Bitmap(imgPath);
		if(img != null) {
			mii.fMask |= MIIM.Bitmap;
			mii.hbmpItem = img.GetHbitmap();
		}
	}
}

مواضيع متنوعة

#7

السلام عليكــم ورحمـة الله وبركاتــه ،،

up

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