المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيف بإمكانك وضع روابط لملفات على سطح المكتب و حذفه


مهدي
01-03-2008, 05:01 PM
الكود التالي يساعدك على إنشاء رابط لملف ما على سطح المكتب و حذفه

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


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(TargetNa me))) ;
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;

Maher Tannous
01-03-2008, 05:18 PM
شكراً لك أخي الكريم

الطموني
04-03-2008, 10:28 AM
شكرا لك أخي

مهدي
04-03-2008, 12:32 PM
أهلا بكم إخوتي جميعا

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



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(TargetNa me))) ;
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;

STRELiTZIA
19-03-2008, 11:41 AM
جزاك الله خيرا اخي مهدي :)
ملاحظة صغيرة لجعل الــ Code portable و تطويره ليصبح في النهاية Component
- تقسيمه الى Procedure او function مستقلة. يجعله متعدد الاتسعمالات.
- و منها جعله بسهولة Component.

تحياتي :)

لانا
19-03-2008, 12:12 PM
جزاك الله كل الخير..

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

CLSID_ShellLink, IPersistFile, PItemIDList ,SHGetPathFromIDList


جعلها الله في موازين حسناتك..

STRELiTZIA
19-03-2008, 06:46 PM
في ايطار نفس الموضوع...
مرفق ملف مصدري يعمل Link مباشرة في Desktop معدل.

تحياتي

مهدي
19-03-2008, 07:58 PM
و جزاكم إخوتي الكرام


لجعل الــ 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 معدل.


طريقة أخرى أحسنت.

STRELiTZIA
20-03-2008, 11:39 AM
لم يسبق لي و أن أنجزت مكونا ****ا أن تقوم بإكمال الفكرة الطيبة.


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

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

تحياتي :)

مهدي
21-03-2008, 04:18 PM
و بالمقابل مطلوب منكم تطويره ليعمل Link في Program menu


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

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

STRELiTZIA
21-03-2008, 05:08 PM
ممتاز اخي مهدي :)

bilgads
05-04-2008, 07:15 PM
شكرا لكم جميعا على هذه الامثلة الرائعة

مهدي
07-04-2008, 08:54 PM
أهلا و مرحبا بك أخي الكريم

ae20220
22-01-2009, 10:05 PM
بسم الله مشأ الله
بارك الله فيكم جميعا على ما تقدمونه للمبتدئين امثالى
شكرررررررررررررررا

abo-ghadab
01-02-2009, 04:20 AM
تحياتي للأخوة على هذه المعلومات