كيف بإمكانك وضع روابط لملفات على سطح المكتب و حذفه
#1
الكود التالي يساعدك على إنشاء رابط لملف ما على سطح المكتب و حذفه

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

كود :
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;
الرد
#2
شكراً لك أخي الكريم
الرد
#3
أهلا بكم إخوتي جميعا

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

كود :
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;
الرد
#4
جزاك الله خيرا اخي مهدي Smile
ملاحظة صغيرة لجعل الــ Code portable و تطويره ليصبح في النهاية Component
- تقسيمه الى Procedure او function مستقلة. يجعله متعدد الاتسعمالات.
- و منها جعله بسهولة Component.

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

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

CLSID_ShellLink, IPersistFile, PItemIDList ,SHGetPathFromIDList


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

تحياتي


الملفات المرفقة
.rar   LinkMaker.rar (الحجم : 206.42 ك ب / التحميلات : 703)
الرد
#7
و جزاكم إخوتي الكرام

إقتباس :لجعل الــ 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 معدل.

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

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

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

تحياتي Smile


الملفات المرفقة
.rar   IsLinkMaker.rar (الحجم : 4.71 ك ب / التحميلات : 209)
الرد
#9
إقتباس :و بالمقابل مطلوب منكم تطويره ليعمل Link في Program menu

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

المكون في المرفقات


الملفات المرفقة
.zip   windows-1256''IsLinkMaker_2.0.zip (الحجم : 8.02 ك ب / التحميلات : 228)
[-] كل من 1 user says قال شكرا ل مهدي على المشاركة المفيدة
  • zouaidahmed
الرد
#10
ممتاز اخي مهدي Smile
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم