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

Add Item To Explorer Context Menu

بدأه romanof في 25 يناير 2008 · 16 رد · 2,349 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كنت اتساءل عن الطريقة التي يمكن بها اضافة عنصر الى Explorer Context Menu

كما يقوم بذلك الwinrar والكاسبيرسكي دون استخدام مكونات اضافية مثل ال Shell extension

هناك مثال قريب من هذا الامر في الامثلة التي تاتي مع دلفي

Demo\activex\Ext

طبعا بحثت جيدا في النت وكل ما وجدته كان مكونات تقوم بعمل هذا الشيء

يبدو ان الموضوع يحتاج الى اطلاع جيد على موضوع الActiveX و الCom

تم تعديل هذه المشاركة بواسطة romanof في 25 يناير 2008 في 03:05

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#3

في المجمل نعم هذا هو ما اريده لكن المثال هناك لم يعمل معي ثم ماريده هو شي اخر اريد التحكم في الامر الموجود داخل العنصر الذي اضفته

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#4

http://msdn2.microsoft.com/en-us/library/aa753589.aspx

اليس لهذا علاقة بالموضوع ؟؟

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#5

جميل انه شغل رجستري ولكن ماذا عن اضافة ايقونة وبجانبها كتابة كما يفعل صديقنا Winrar

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#6

لا بد ان هذا المقال مفيد لمن يعرف السي++

http://shellrevealed.com/blogs/shellblog/a...dard-menus.aspx

وهذه ايضا بل انه اعجبني اكثر من الاول

http://www.nanoant.com/programming/themed-...sta-xp-solution

ساواصل البحث وادلكم على النتائج

تم تعديل هذه المشاركة بواسطة romanof في 26 يناير 2008 في 06:49

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#7

غريب كنت اظن هذا الموضوع مثير لكثير من الاعضاء لكن يبدو تني المبرمج المبتدئ الوحيد :blink: :blink:

عموما

 
uses
Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
R : TRegIniFile;
begin
R := TRegIniFile.Create('');
with R do begin
RootKey := HKEY_CLASSES_ROOT;
WriteString('.myext','ooo','MyExt');
WriteString('MyExt','','Some description of MyExt files');
WriteString('MyExt\DefaultIcon','','Check.bmp,0');
WriteString('MyExt\Shell','','This_Is_Our_Default_Action');
WriteString('MyExt\Shell\First_Action','','This is our first action');
WriteString('MyExt\Shell\First_Action\command','',
'C:\MyApp.Exe /LotsOfParamaters %1');
WriteString('MyExt\Shell\This_Is_Our_Default_Action','',
'This is our default action');
WriteString('MyExt\Shell\This_Is_Our_Default_Action\command',
'','C:\MyApp.Exe %1');
WriteString('MyExt\Shell\Second_Action','','This is our second action');
WriteString('MyExt\Shell\Second_Action\command',
'','C:\MyApp.Exe /TonsOfParameters %1');
Free;
end;
end;

//*********************************//

هناك موضوع جميل جدا في كتاب Borland Delphi 5 Developer's Guide

الجزء الثاني في الباب رقم 24 الباب يتحدث عن Shell Extension ومن المفيد جدا ان

تقرا

تم تعديل هذه المشاركة بواسطة romanof في 31 يناير 2008 في 06:50

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#8

نسيت المرفقات

UnitContMenu.rar

UnitContMenu.rar

UnitContMenu.rar

UnitContMenu.rar

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#9

كان من الممكن تطوير كود الوحدة

البرمجية بحيث يتفاعل مع اكثر من ملف وذلك في المنهاج

function TContextMenu.SEIInitialize
CreateListFile(strName: TFileNameFull);

وذلك كالاتي

اضف الى خواص الصنف TContextMenu

FListFile: array of TFileNameFull

procedure CreateListFile(strName: TFileNameFull);

وبعد ذلك

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

[code]function TContextMenu.SEIInitialize(pidlFolder: PItemIDList;
							   lpdobj: IDataObject; hKeyProgID: HKEY): HResult;
var
  StgMedium: TStgMedium;
  FormatEtc: TFormatEtc;
  CountFiles: Integer;
  IndexFile: Integer;
begin
  if (lpdobj = nil) then begin Result := E_INVALIDARG; Exit; end;
  with FormatEtc do begin
	cfFormat:= CF_HDROP;
	ptd:= nil;
	dwAspect:= DVASPECT_CONTENT;
	lindex:= -1;
	tymed:= TYMED_HGLOBAL;
  end;
  Result := lpdobj.GetData(FormatEtc, StgMedium);
  if Failed(Result) then Exit;

  FFileName[0]:= #0;

  CountFiles:= DragQueryFile(StgMedium.hGlobal, $FFFFFFFF, nil, 0);

لاحظ اننا هنا اخذنا عدد الملفات التي ظللناها قبل الضغط علة الزر الا

تم تعديل هذه المشاركة بواسطة romanof في 31 يناير 2008 في 06:33

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#10

اخيرا انتهى الموضوع بعد كم اسبوع من الترقيع والبحث عن الاكواد الجاهزة والبحث في الكتب اظن اني ذكرت المراجع في البداية

ولكن اهم شي هو كتاب Borland Delphi 5 Developer's وجدت فيه الموضوع بالتفصيل اهم شي هو البحث والحب وفقط البحث

والصبر ..والنت اليوم اتعبني لذلك مشاركاتي مشوهة اليوم

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#11

أظن أنني وصلت متأخرا :D

لكن بما أنك تريد عمل نفس ما يقوم به winrar

فلو كنت مكانك لعملت التالي:

1/حفظ نسخة عن الـregistry قبل تنصيب winrar

2/حفظ نسخة عن الـregistry بعد تنصيب winrar

3/ عمل مقارنة بين الملفين (الأمر fc يفي بالغرض)

أتمنى أن تفيدك هذه الفكرة

:rolleyes:

#12

اخي الكريم حتى لو كنت فعلت قلته كيف كنت سانفذ هذا برمجيا ؟ عموما الاجابة في كتاب Delphi Dev Guid5 volume 2

شكرا عزيزي ولكم ماهو الFC

مازلت اجمع الوصلات حول الموضوع لعله يشكل مرجعا متكاملا لمن يبحث عن هذا السؤال فيما بعد..

http://msdn2.microsoft.com/en-us/library/b...881(VS.85).aspx

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#13

نسيت ان اذكر انه لابد من تسجيل المكتبة الديناميكية

من قائمة ابدا اختر Run ثم :

REGSVR32.EXE /s C:\c\UnitContMenu\UnitContMenu.dll

طبعا ضع المسار الخاص ببرنامجك

شغل البرنامج الموجود في المرفقات وضعه في المسار الخاص والموجود في المكتبه الديناميكية

كان المفرض ان ااجعل كود البرنامج بحيث يقوم بتسجيل نفسه في منطقة معينة من الرجستري ومن ثم تقوم المكتبه الديناميكية باستدعاءه من هناك

ولكن تكاسلت

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#14

fc هو أحد أوامر الـdos والتي تقوم بالمقارنة بين الملفات ascii files

لمزيد من المعلومات

fc /?
#15

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

ContextMenuHandler

موضوعك عزيزي شيق وممتع وانا كنت علي وشك فتح هذا الموضوع منذ فترة في قسم دلفي بعد ان اصبح عمل ShellExt غير امن في بيئة الدوت نت.

ولكن كثرة انشغالي هي السبب في عدم فتح هذا الموضوع.

في الرابط التالي يوجد شيفرة ممتازة لكيفية إنشاء عنصر قائمة رئيسي وفرعي مع رسم صورة عليها والتحكم بالعنصر.

CustomContextMenu

Delphi Stuff

تم تعديل هذه المشاركة بواسطة Moudey في 7 فبراير 2008 في 22:17

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

#16

شكرا يا اخ Moudey

تم التحميل وساطلع على الشيفرة مساء

لم اكن اعرف انك تعرف الدلفي ايضا ...

لمن يحيد السي++

The Complete Idiot's Guide to Writing Shell Extensions - Part I

The Complete Idiot's Guide to Writing Shell Extensions - Part II

تم تعديل هذه المشاركة بواسطة romanof في 8 فبراير 2008 في 14:26

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#17
Dynamic ShellCommand

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

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