• 0
Moudey

Dynamic Shellcommand

سؤال

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

نبدأ بأذن الله مشروع القوائم المرنة "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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

Create Shell Extensions ContextMenu Handler

http://www.arabteam2000-forum.com/index.php?showtopic=114720

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

يوجد خطأ في مسار ملف 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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

وشكرا

تم تعديل بواسطه vbm
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

فى إجراء 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();
}
}
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

up

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .