Verknüpfung auf dem Desktop erstellen
Verknüpfung auf dem Desktop erstellen
Guten Abend, liebe Leute!
Ich habe gerade ein kleines Problem.
Mittels Buttonklick soll eine Verknüpfung auf dem Desktop erstellt werden. Ich dachte eigentlich, das sei kein Ding, aber die Delphi-Lösungen die ich gefunden habe sind ja wirklich unnötig kompliziert und benötigen einige Units, die in Lazarus nicht zur verfügung stehen.
Gibt es in Lazarus eine Möglichkeit *.lnk-Dateien zu erzeugen?
Ich habe gerade ein kleines Problem.
Mittels Buttonklick soll eine Verknüpfung auf dem Desktop erstellt werden. Ich dachte eigentlich, das sei kein Ding, aber die Delphi-Lösungen die ich gefunden habe sind ja wirklich unnötig kompliziert und benötigen einige Units, die in Lazarus nicht zur verfügung stehen.
Gibt es in Lazarus eine Möglichkeit *.lnk-Dateien zu erzeugen?
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Verknüpfung auf dem Desktop erstellen
Welche Units fehlen dir denn für die delphi Lösungen ? Mir sind eigentlich keine Bekannt die unter Lazarus nicht zur verfügung stehen ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Verknüpfung auf dem Desktop erstellen
Verknüpfungen machen tut man typisch mit Shellapi/shlobj usw. Die sind erst in 2.2.2 meistens komplet. Und das funktioniert natürlich nur unter Windows32/64.
Zuletzt geändert von marcov am So 21. Sep 2008, 14:20, insgesamt 1-mal geändert.
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Verknüpfung auf dem Desktop erstellen
Unter z.B. Linux hast du ja auch keine .lnk-Dateien, sondern .desktop-Dateien. (Die man z.B. mit TIniFile erstellen kann) Du kannst doch die WinAPI-Funktionen mit Compilerswitches in Linux/MacOS ausschalten. Dann müsstest du doch den Delphi-Code verwenden können, oder?
Zuletzt geändert von Targion am So 21. Sep 2008, 16:24, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Verknüpfung auf dem Desktop erstellen
.desktop-Dateien kannst du recht einfach als Textdatei, bzw. in ner Stringliste erstellen und dann abspeichern, Rechte vorausgesetzt, natürlich. Aber du wirst es ja unter Windows haben wollen.
Zeig mal das Beispiel, was du für Delphi gefunden hast, ev. lässt sich das anpassen, da das ganze wohl eh nicht Plattformunabhängig zu realisieren ist.
Zeig mal das Beispiel, was du für Delphi gefunden hast, ev. lässt sich das anpassen, da das ganze wohl eh nicht Plattformunabhängig zu realisieren ist.
Johannes
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Re: Verknüpfung auf dem Desktop erstellen
Weil's mich auch interessiert hat, wie man wohl unter Windows Verknüpfungen anlegen kann, habe ich gegoogelt.
Was ich herausfinden konnte:
So, das habe ich von hier:
http://www.delphipraxis.net/topic24241_ ... ellen.html" onclick="window.open(this.href);return false;
Aber der Link wird nicht angelegt. Vielleicht hilft es ja trotzdem, soviele Zeilen sind es ja nicht. Wenn man wie ich kein WinAPI kann, ist man allerdings ziemlich aufgeschmissen.
Da ist Linux wirklich supereinfach....
Was ich herausfinden konnte:
Code: Alles auswählen
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
ActiveX, comobj, shlobj, StdCtrls;
CreateLink(lpszPathObj,lpszPathLink,
lpszDesc: string):Boolean;
var
psl: IShellLink;
ppf: IPersistFile;
const
IID_IPersistFile:
TGUID = (D1:$0000010B;
D2:$0000;
D3:$0000;
D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
result := False;
if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,
nil,
CLSCTX_INPROC_SERVER,
IID_IShellLinkA,
psl)) then
begin
psl.SetPath(PChar(lpszPathObj));
psl.SetDescription(PChar(lpszDesc));
if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,
ppf)) then
begin
ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
Result := true;
end;
end;
end;
http://www.delphipraxis.net/topic24241_ ... ellen.html" onclick="window.open(this.href);return false;
Aber der Link wird nicht angelegt. Vielleicht hilft es ja trotzdem, soviele Zeilen sind es ja nicht. Wenn man wie ich kein WinAPI kann, ist man allerdings ziemlich aufgeschmissen.

Da ist Linux wirklich supereinfach....

-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Verknüpfung auf dem Desktop erstellen
Guck ma, das funzt bei mir prima:
Code: Alles auswählen
unit Shortcut;
{$mode delphi}
interface
uses ShlObj, ActiveX, ComObj, Windows, SysUtils, dialogs;
// TARGET is the file that the shortcut will point to.
// ARGS is the command-line arguments you wish to pass to the Target app.
// WORKDIR is the directory that will be current when the link is launched.
// SHORTCUTNAME is the name of the shortcut link file.
// LOC is the location the file should go. Uses the WinInfo unit to get the location
// of special system locations. Set to slNone if ShortCutName fully defines the
// location of the shortcut.
procedure CreateLink(Target,Args,WorkDir,ShortCutName, IconPath:String; Loc:WideString);
implementation
procedure CreateLink(Target,Args,WorkDir,ShortCutName, IconPath:String; Loc:WideString);
var
IObj : IUnknown;
Link : IShellLink;
IPFile : IPersistFile;
begin
IObj := CreateComObject(CLSID_ShellLink);
Link := IObj as IShellLink;
IPFile := IObj as IPersistFile;
with Link do
begin
SetPath(PChar(Target));
SetArguments(PChar(Args));
SetWorkingDirectory(PChar(WorkDir));
SetIconLocation(PChar(Iconpath), 0);
end;
Loc:=Loc+Shortcutname+'.lnk';
IPFile.Save(PWChar(Loc),False);
IPFile.SaveCompleted(PWChar(Loc));
end;
end.
mfg Ingo
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Verknüpfung auf dem Desktop erstellen
Kann ich bestätigen, das letzte Listing Unit Shortcut funzt perfekt, auch für Startmenü-Eintrag erstellen gerade eben ausprobiert und super, werd ich so im Setup-Programm meines Projekts verwenden (für die armen Windows-Version-Benutzer, 
