며칠 전 고객의 요청에 따라 실제로 VB와 VC를 사용 하여이 내용을 더 빨리 작성했지만 여전히 델파이를 사용하고 싶습니다.
우선, ActiveX, Comobj, stdctrls, shlobj, filectrl을 사용하십시오.
지정된 폴더의 현재 응용 프로그램에 대한 바로 가기 생성
절차 tform1.makelink (folderName : String ; Proname, lnkname, description : String );
var
WorkDir, Destname : String ;
AOBJ : iunknown;
MyLink : IshellLink;
mypfile : ipersistfile;
wfilename : widestring;
Curdir : char 의 배열 [0..100];
시작하다
DESTNAME : = FolderName + lnkname;
aobj : = createcomobject (clsid_shelllink);
mylink : = ashelllink로 aobj;
mypfile : = ipersistfile으로 aobj;
getCurrentDirectory (sizeof (curdir), curdir);
WorkDir : = Curdir;
Proname : = trim (workdir)+'/'+proname;
MyLink 와 함께
시작하다
SetShowcmd (SW_NORMAL);
setArguments ( '');
setDescription (pchar (description));
setPath (pchar (proname));
setworkingdirectory (pchar (workdir));
끝;
createir (ExtractFilePath (destname));
wfilename : = destname;
mypfile.save (pwchar (wfilename), false);
끝;
// start-> program->의 시작 그룹으로가는 길을 가져옵니다.
함수 tform1.getSpecialfolder : String; // Starup Floder를 얻습니다
var
PIDL : PITEMIDLIST;
핸들 : thandle;
comp : tcomponent;
Linkdir : 문자열 ;
시작하다
결과 : = '';
comp : = self; // self.owner;
핸들 : = (tform 으로 comp) .handle;
성공 하면 (ShgetSpecialfolderLocation (핸들, CSIDL_COMMON_STARTUP, PIDL)) 그러면 // 다른 특수 경로도 CSIDL_COMMON을 사용할 수 있거나 Delphi에서 확인할 수 있습니다.
시작하다
setLength (linkdir, max_path);
ShgetPathFromIdlist (PIDL, PCHAR (Linkdir));
setLength (linkdir, strlen (pchar (linkdir)));
결과 : = linkdir+'/';
끝;
끝;
// 일부 콘텐츠는 독점 BBS 컨텐츠에서 빌립니다