كيف بإمكانك وضع روابط لملفات على سطح المكتب و حذفه
#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 KB / التحميلات : 698)
الرد
#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 KB / التحميلات : 205)
الرد
#9
إقتباس :و بالمقابل مطلوب منكم تطويره ليعمل Link في Program menu

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

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


الملفات المرفقة
.zip   windows-1256''IsLinkMaker_2.0.zip (الحجم : 8.02 KB / التحميلات : 223)
الرد
#10
ممتاز اخي مهدي Smile
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف