ไม่กี่วันที่ผ่านมาตามคำร้องขอของลูกค้าฉันใช้ VB และ VC เพื่อเขียนสิ่งนี้เร็วขึ้น แต่ฉันก็ยังชอบใช้ Delphi
ก่อนอื่นใช้ ActiveX, Comobj, stdctrls, shlobj, filectrl;
สร้างทางลัดไปยังแอปพลิเคชันปัจจุบันในโฟลเดอร์ที่ระบุ
ขั้นตอน tform1.makelink (folderName: string ; proname, lnkname, คำอธิบาย: สตริง );
วาจา
workdir, destname: String ;
aobj: iunknown;
MyLink: Ishelllink;
mypfile: ipersistfile;
wfilename: กว้างที่สุด;
Curdir: Array [0..100] ของ Char;
เริ่ม
destName: = folderName + lnkname;
aobj: = createComobject (clsid_shelllink);
myLink: = aobj as ishelllink;
mypfile: = aobj เป็น ipersistfile;
getCurrentDirectory (sizeof (curdir), curdir);
Workdir: = Curdir;
ชื่อ Proname: = trim (workdir)+'/'+proname;
ด้วย mylink do
เริ่ม
setshowcmd (sw_normal);
SetArguments ('');
setDescription (pchar (คำอธิบาย));
setPath (pchar (ชื่อชื่อ));
SetWorkingDirectory (pchar (workdir));
จบ;
createDir (ExtractFilePath (destname));
wfilename: = destname;
mypfile.save (pwchar (wfilename), false);
จบ;
// รับเส้นทางไปยังกลุ่มเริ่มต้นของ start-> program->
ฟังก์ชั่น tform1.getspecialfolder: string; // รับ starup floder
วาจา
PIDL: PitemidList;
มือจับ: Thandle;
comp: tComponent;
linkdir: สตริง ;
เริ่ม
ผลลัพธ์: = '';
comp: = self; // self.owner;
มือจับ: = (comp เป็น tform) .handle;
หาก ประสบความสำเร็จ (shgetspecialFolderLocation (Handle, CSIDL_COMMON_STARTUP, PIDL)) จากนั้น // เส้นทางพิเศษอื่น ๆ สามารถใช้ CSIDL_COMMON ได้หรือเพียงตรวจสอบใน Delphi
เริ่ม
setLength (linkdir, max_path);
ShgetPathFromidList (PIDL, PCHAR (LinkDir));
setLength (linkdir, strlen (pchar (linkdir)));
ผลลัพธ์: = linkdir+'/';
จบ;
จบ;
// เนื้อหาบางส่วนยืมมาจากเนื้อหา BBS ผูกขาด