Hace unos días, a pedido del cliente, en realidad usé VB y VC para escribir esto más rápido, pero aún así me gusta usar Delphi
En primer lugar, use ActiveX, Comobj, stdctrls, shlobj, filectl;
Cree un acceso directo a la aplicación actual en la carpeta especificada
Procedimiento tform1.makelink (folderName: string ; proname, lnkname, descripción: string );
varilla
WorkDir, Destname: String ;
Aobj: Iunknown;
MyLink: Ishelllink;
Mypfile: ipersistfile;
Wfilename: widestring;
Curdir: matriz [0..100] de char;
Comenzar
DestName: = FolderName + lnkname;
aobj: = createComObject (clsid_shelllink);
Mylink: = aobj como ishelllink;
Mypfile: = aobj como ipersistfile;
GetCurrentDirectory (sizeOf (curdir), curdir);
WorkDir: = Curdir;
proname: = trim (workDir)+'/'+proname;
con mylink do
Comenzar
SetShowCmd (SW_Normal);
SetarGuments ('');
SetDescription (pChar (descripción));
SetPath (pchar (proname));
SetWorkingDirectory (PCHAR (WorkDir));
fin;
Creatirir (extractFilePath (DestName));
WfileName: = DestName;
Mypfile.save (pwchar (wfileName), falso);
fin;
// Obtener la ruta al grupo de inicio de inicio-> programa->
función tform1.getSpecialFolder: string; // Get StarUp Floder
varilla
Pidl: Pitemidlist;
Mango: thandle;
Comp: TComponent;
Linkdir: string ;
Comenzar
resultado: = '';
Comp: = self; // self.Owner;
manejar: = (comp as tForm) .handle;
Si se sucede (shgetSpecialFolderLocation (Handle, csidl_common_startup, pidl)), entonces // otras rutas especiales también se pueden usar csidl_common o simplemente verificarlo en Delphi
Comenzar
SetLength (linkdir, max_path);
ShgetPathFromidList (PIDL, PCHAR (LinkDir));
SetLength (LinkDir, Strlen (PChar (LinkDir)));
resultado: = linkdir+'/';
fin;
fin;
// parte del contenido presta el contenido de Monopoly BBS