Hallo,
ik ben een installer aan het schrijven, het enige wat nog fout gaat is het plaatsen van items in het start menu. Ik maak wel links naar de programma's aan, alleen worden die ook in de folder waar de programma's staan opgeslagen....Da's dus niet de bedoeling.
Hier is de code :
function CreateShortcut(SourceFileName: string;Location: ShortcutType;SubFolder,WorkingDir,Parameters,Description: string):string;
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
LinkName: string;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
MySLink.SetPath(PChar(SourceFileName));
MYSLink.SetWorkingDirectory(PChar(SubFolder));
MySLink.SetDescription(PChar(Description));
LinkName := ChangeFileExt(SourceFileName, '.lnk');
showmessage (LinkName); //test test
MyPFile.Save(PWChar(LinkName), False);
Result := LinkName;
end;
function GetProgramDir: string;
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
Result := reg.ReadString('Programs');
reg.CloseKey;
finally
reg.Free;
end;
end;
DE aanroep is als volgt :
resPath := CreateShortcut(PROG1, _STARTMENU, GetProgramDir,'','','Customer Manager');
PROG1 is de lokatie van bestanden op pc waarnaar een link gemaakt moet worden
_STARTMENU is een keuze (nog niet geimplementeerd)
GetProgramDir is de lokatie van het startmenu
twee lege parameters, nog niet in gebruik
Customer Manager is de omschrijving.
Hij maakt dus wel een link aan, maar in de lokatie van PROG1 en niet bij GetProgramDir.
Hoe is dit op te lossen, volgens mij ben ik iets vergeten..
TIA!
ik ben een installer aan het schrijven, het enige wat nog fout gaat is het plaatsen van items in het start menu. Ik maak wel links naar de programma's aan, alleen worden die ook in de folder waar de programma's staan opgeslagen....Da's dus niet de bedoeling.
Hier is de code :
function CreateShortcut(SourceFileName: string;Location: ShortcutType;SubFolder,WorkingDir,Parameters,Description: string):string;
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
LinkName: string;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
MySLink.SetPath(PChar(SourceFileName));
MYSLink.SetWorkingDirectory(PChar(SubFolder));
MySLink.SetDescription(PChar(Description));
LinkName := ChangeFileExt(SourceFileName, '.lnk');
showmessage (LinkName); //test test
MyPFile.Save(PWChar(LinkName), False);
Result := LinkName;
end;
function GetProgramDir: string;
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False);
Result := reg.ReadString('Programs');
reg.CloseKey;
finally
reg.Free;
end;
end;
DE aanroep is als volgt :
resPath := CreateShortcut(PROG1, _STARTMENU, GetProgramDir,'','','Customer Manager');
PROG1 is de lokatie van bestanden op pc waarnaar een link gemaakt moet worden
_STARTMENU is een keuze (nog niet geimplementeerd)
GetProgramDir is de lokatie van het startmenu
twee lege parameters, nog niet in gebruik
Customer Manager is de omschrijving.
Hij maakt dus wel een link aan, maar in de lokatie van PROG1 en niet bij GetProgramDir.
Hoe is dit op te lossen, volgens mij ben ik iets vergeten..
TIA!
I hope I never get so old I get religious