Create shortcut

Plocha, Štart menu, hlavná lišta, systémové premenné, ...

Create shortcut

Odoslaťod hosť » 27 Apr 2006, 19:11

Nevie niekto ako sa da vytorit odkaz na nejaky program vo windowse v delphi? Nasiel som nejake zdrojaky, ale nevedel som to rozchodit a ak niekto vie ako na to tak mi sem hodte zdrojak celeho programu , lebo zase mi to nepojde :roll: dikes
hosť
začiatočník
začiatočník
 
Príspevky: 0
Založený: 14 Okt 2008, 12:59

Odoslaťod hosť » 28 Apr 2006, 20:23

do uses pridaj toto: ActiveX, ShlObj, ComObj, Registry

pouzi tieto dva algoritmy:

Kód: Vybrať všetko
function GetLnkName(Key, ProgramName: string): string;
var
  reg: TRegistry;
begin
reg := TRegistry.Create;
reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', true);
Result := reg.ReadString(Key);
if Result <> '' then Result := Result + '\';
Result := Result + ChangeFileExt(ExtractFileName(ProgramName), '.lnk');
reg.free;
end;

procedure SaveLink(Key, ProgramName, ProgramPath: string; Arguments: string; Description: string; IconLocation: integer);
var
AnObj: IUnknown;
ShLink: IShellLink;
PFile: IPersistFile;
FullName: string;
WideName: WideString;
begin
   FullName := GetLnkName(Key, ProgramName);
   if not FileExists(FullName) then
   begin
     AnObj := CreateComObject(CLSID_ShellLink);
     ShLink := AnObj as IShellLink;
     PFile := AnObj as IPersistFile;
     ShLink.SetPath(PChar(ProgramPath));
     ShLink.SetArguments(PChar(Arguments));
     ShLink.SetIconLocation(PChar(ProgramPath), IconLocation);
     ShLink.SetWorkingDirectory(PChar(ExtractFilePath(ProgramPath)));
     ShLink.SetDescription(PChar(Description));
     WideName := FullName;
     PFile.Save(PWChar(WideName), False);
     ShLink := nil;
     PFile := nil;
   end;
end;



Ak si chces napriklad vytvorit odkaz samotnej spustenej aplikacie na ploche, tak pouzi toto:

Kód: Vybrať všetko
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveLink('Desktop', ExtractFileName(ParamStr(0)), ParamStr(0), '', '', 0);
end;


Desktop znamena, ze sa vytvori na ploche - mozes pouzit miesto toho aj Favorites (Ob?úbené), Fonts (Fonty), My pictures (Obrázky), Personal (Moje dokumenty), Programs (Programy), Start Menu (Štart menu), Startup (Po spustení), Local Settings (Local Settings)

ExtractFileName(ParamStr(0)) je subor, na ktory sa vytvara odkaz - napriklad program.exe

ParamStr(0) je cela cesta suboru, na ktory sa vytvara odkaz - napriklad C:\program.exe
hosť
začiatočník
začiatočník
 
Príspevky: 0
Založený: 14 Okt 2008, 12:59

Odoslaťod hosť » 02 Máj 2006, 17:36

dikes moc 8)
hosť
začiatočník
začiatočník
 
Príspevky: 0
Založený: 14 Okt 2008, 12:59

Re: Create shortcut

Odoslaťod krokousdan » 11 Júl 2009, 17:06

Ahoj,
to je perfektní !
Můžeš to tady ještě rozšířit, jak si vytvořit zápisem do registru odkaz v kontextovém menu pravého tlačítka myši ?

Mámna mysli, že když někde na volném místě wokna klepneš prav. tlačítkem myši tak tam je základní menu jako :

Kód: Vybrať všetko
Seřadit Ikony ->
Aktualizovat
-----------------
Vložit
Vložit zástupce
-----------------
[b]a sem bych chtěl vložit odkaz na můj program[/b]
-----------------
Nový ->
-----------------
Vlastnosti
--------------------


Tzn. mám svůj instalátor, který nainstaluje můj program kam si uživatel navolí a po klepnutí na tlačítko dokončit se program zaregistruje a vytvoří odkaz jak výše , popř. i s ikonou programu. Jde mi o WinXP .

Je to oříšek, který řeším již delší dobu a nějak mi to neleze do hlavy.

Předem děkuji a teším se na rychlou odpověď.

Dan
krokousdan
mierne pokročilý
mierne pokročilý
 
Príspevky: 4
Založený: 24 Nov 2008, 7:34


Naspäť na Windows

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 1 hosť.

cron