delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف بإمكانك وضع روابط لملفات على سطح المكتب و حذفه
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
الكود التالي يساعدك على إنشاء رابط لملف ما على سطح المكتب و حذفه

في المثال التالي الرابط يسمى دلفي للعرب بإمكانك تغيير إسم الرابط، يساعدك هذا كود على إشاء برامج تنصيب في المستقبل.

كود :
Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; ... uses ShlObj, ActiveX, ComObj; ... procedure TForm1.Button1Click(Sender: TObject); var IObject : IUnknown; ISLink : IShellLink; IPFile : IPersistFile; PIDL : PItemIDList; InFolder : array[0..MAX_PATH] of Char; TargetName : String; LinkName : WideString; begin if OpenDialog1.Execute then begin TargetName := OpenDialog1.FileName; IObject := CreateComObject(CLSID_ShellLink) ; ISLink := IObject as IShellLink; IPFile := IObject as IPersistFile; with ISLink do begin SetPath(pChar(TargetName)) ; SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ; end; SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ; SHGetPathFromIDList(PIDL, InFolder) ; LinkName := InFolder + '\دلفي للعرب.lnk'; // إسم الرابط IPFile.Save(PWChar(LinkName), false) ; end; end; procedure TForm1.Button2Click(Sender: TObject); var PIDL : PItemIDList; InFolder : array[0..MAX_PATH] of Char; LinkName : WideString; begin SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ; SHGetPathFromIDList(PIDL, InFolder) ; LinkName := InFolder + '\دلفي للعرب.lnk'; DeleteFile(LinkName) ; end;
شكراً لك أخي الكريم
أهلا بكم إخوتي جميعا

و هذا الكود يقوم بإنشاء و حذف رابط لملف على قائمة البرامج

كود :
Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; ... uses ShlObj, ActiveX, ComObj; ... procedure TForm1.Button1Click(Sender: TObject); var IObject : IUnknown; ISLink : IShellLink; IPFile : IPersistFile; PIDL : PItemIDList; InFolder : array[0..MAX_PATH] of Char; TargetName : String; LinkName : WideString; begin if OpenDialog1.Execute then begin TargetName := OpenDialog1.FileName; IObject := CreateComObject(CLSID_ShellLink) ; ISLink := IObject as IShellLink; IPFile := IObject as IPersistFile; with ISLink do begin SetPath(pChar(TargetName)) ; SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ; end; SHGetSpecialFolderLocation(0,CSIDL_COMMON_PROGRAMS ,PIDL); SHGetPathFromIDList(PIDL, InFolder) ; LinkName := InFolder + '\دلفي للعرب.lnk'; // إسم الرابط IPFile.Save(PWChar(LinkName), false) ; end; end; procedure TForm1.Button2Click(Sender: TObject); var PIDL : PItemIDList; InFolder : array[0..MAX_PATH] of Char; LinkName : WideString; begin SHGetSpecialFolderLocation(0,CSIDL_COMMON_PROGRAMS ,PIDL); SHGetPathFromIDList(PIDL, InFolder) ; LinkName := InFolder + '\دلفي للعرب.lnk'; DeleteFile(LinkName) ; end;
جزاك الله خيرا اخي مهدي Smile
ملاحظة صغيرة لجعل الــ Code portable و تطويره ليصبح في النهاية Component
- تقسيمه الى Procedure او function مستقلة. يجعله متعدد الاتسعمالات.
- و منها جعله بسهولة Component.

تحياتي Smile
جزاك الله كل الخير..

لو سمحت اخي ممكن تشرح لي بعض المفردات بشكل بسيط..لأنه في النهاية أنا لا **** نسخ ولصق..

CLSID_ShellLink, IPersistFile, PItemIDList ,SHGetPathFromIDList


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

تحياتي
و جزاكم إخوتي الكرام

إقتباس :لجعل الــ Code portable و تطويره ليصبح في النهاية Component

لم يسبق لي و أن أنجزت مكونا ****ا أن تقوم بإكمال الفكرة الطيبة.

إقتباس :CLSID_ShellLink, IPersistFile, PItemIDList ,SHGetPathFromIDList

الكود المصدري ليس من إنجازي 100% غير أني أجريت بعض التعديلات فيه و فهمت منه ما يلي

CLSID_ShellLink هو نوع من الكائنات عبارة عن رابط أولي

IpersistFile هي قيمة لملف أولي (و هو الرابط نفسه)

PItemIDList نوع للمتغير الذي يحمل قيم المجلد أولي لقائمة البرامج CSIDL_COMMON_PROGRAMS
أو سطح المكتب CSIDL_DESKTOPDIRECTORY من بين القيم هذه مسار المجلد الأولي لقائمة البرامج أو سطح المكتب الذي يتم استخراجه من هذا المتغير بـ SHGetPathFromIDList

إذن CLSID_ShellLink عبارة عن رابط يتكون من ملف (IPFile) بنطاق .lnk و مسار للملف المراد إنشاء رابط له (ISLink).

إقتباس :مرفق ملف مصدري يعمل Link مباشرة في Desktop معدل.

طريقة أخرى أحسنت.
إقتباس :لم يسبق لي و أن أنجزت مكونا ****ا أن تقوم بإكمال الفكرة الطيبة.

على عيني اخي مهدي Smile
المرفق يحتوي على المكون Component.

و بالمقابل مطلوب منكم تطويره ليعمل Link في Program menu ايظـــــا Big Grin

تحياتي Smile
إقتباس :و بالمقابل مطلوب منكم تطويره ليعمل Link في Program menu

تمت إضافة طريقة إدراج رابط في قائمة البرامج بمجلد إسمه منتدى دلفي للعرب

المكون في المرفقات
ممتاز اخي مهدي Smile
الصفحات : 1 2