Sign in Join
Wiki copytemporary

Filelink/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-\
2-Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].\
3-\
4-Dieses Tutorial handelt von der Windowsprogrammierung.\
5-Dieses Tutorial zeigt, wie man unter Windows einen Dateilink erstellt.\
6-\
7-Folgende Units werden dafür benötigt:
1+[![Windows logo - 2012.svg](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Windows_logo_-_2012.svg/50px-Windows_logo_-_2012.svg.png)](</File:Windows_logo_-_2012.svg>)
82
9-``` pascal
3+Dieser Artikel behandelt ausschließlich [Windows](</Category:Windows> "Category:Windows").
4+
5+Siehe auch: [[Multiplatform Programming Guide/de]]
6+
7+│ **Deutsch (de)** │ **[[Filelink|English (en)]]** │
8+****
9+Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].
10+
11+Dieses Tutorial handelt von der Windowsprogrammierung.
12+Dieses Tutorial zeigt, wie man unter Windows einen Dateilink erstellt.
13+
14+Folgende Units werden dafür benötigt:
15+```
1016uses
11- Registry, ActiveX, ComObj, ShlObj, SysUtils;
17+ Registry, ActiveX, ComObj, ShlObj, SysUtils;
1218```
1319
14-\
15-Um der Funktion mitzuteilen, wo der Link gespeichert werden soll wird eine Aufzählung verwendet.\
16-Diese Aufzählung muss je nachdem wo die Funktion aufgerufen wird entweder im interface oder im implementation Abschnitt der Unit deklariert werden.\
17-Definition der Aufzählung:
18-
19-``` pascal
20+
21+Um der Funktion mitzuteilen, wo der Link gespeichert werden soll wird eine Aufzählung verwendet.
22+Diese Aufzählung muss je nachdem wo die Funktion aufgerufen wird entweder im interface oder im implementation Abschnitt der Unit deklariert werden.
23+Definition der Aufzählung:
24+```
2025type
21- ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER);
26+ ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER);
2227```
2328
24-\
25-Die Funktion für das Erstellen eines Links (Dateilinks) sieht wie folgt aus:
26-
27-``` pascal
29+
30+Die Funktion für das Erstellen eines Links (Dateilinks) sieht wie folgt aus:
31+```
2832// Diese Funktion arbeitet mit den Daten des aktuellen Users
29-function funErstelleLink( // Funktionsname
30- const strQuelldatei: string; // Pfad und Name der Originaldatei
31- const enuSpeicherort: ShortcutType; // Wo soll der Shortcut gespeichert werden
32- const strUnterverzeichnis: string = ''; // Optional: Alternativer Pfad zum
33- // speichern des Links
34- const strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem
35- // das Programm arbeiten soll
36- const strParameter: string = ''; // Optional: Übergabeparameter an das Programm
37- const strBeschreibung: string = ''; // Optional: Beschreibung des Shortcuts
38- const strIconDatei: string = ''; // Optional: Datei, die das Icon enthält
39- const intIconNummer: integer = 0 // Optional: Das wievielte Icon das aus
40- // der Icondatei genommen werden soll
41- // (Die Zählung der Icons begint bei 1)
42- ): string;
43-
44-const
45- SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
46- QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
47-
48-var
49- MyObject: IUnknown;
50- MySLink: IShellLink;
51- MyPFile: IPersistFile;
52- Reg: TRegIniFile;
53- strVerzeichnis: string = '';
54- strLinkName: string = '';
55- wstrDateiname: WideString = '';
56-
57-begin
58-
59- Result := '';
60-
61- // Erstellt die Objekte
62- MyObject := CreateComObject(CLSID_ShellLink);
63- MySLink := MyObject as IShellLink;
64- MyPFile := MyObject as IPersistFile;
65-
66- // Erstellt den Namen des Links
67- strLinkName := ChangeFileExt(strQuelldatei, '.lnk');
68- strLinkName := ExtractFileName(strLinkName);
69-
70- // Liest den Speicherort aus der Registry aus
71- if enuSpeicherort = _QUICKLAUNCH then
72- begin
73- Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
74- try
75- strVerzeichnis := Reg.ReadString('MapGroups', 'Quick Launch', '');
76- finally
77- Reg.Free;
78- end;
79- end
80- else
81- begin
82- Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
83- try
84- case enuSpeicherort of
85- _OTHERFOLDER: strVerzeichnis := strUnterverzeichnis;
86- _DESKTOP: strVerzeichnis := Reg.ReadString('Shell Folders', 'Desktop', '');
87- _STARTMENU: strVerzeichnis := Reg.ReadString('Shell Folders', 'Start Menu', '');
88- _SENDTO: strVerzeichnis := Reg.ReadString('Shell Folders', 'SendTo', '');
33+ function funErstelleLink( // Funktionsname
34+ const strQuelldatei: string; // Pfad und Name der Originaldatei
35+ const enuSpeicherort: ShortcutType; // Wo soll der Shortcut gespeichert werden
36+ const strUnterverzeichnis: string = ''; // Optional: Alternativer Pfad zum
37+ // speichern des Links
38+ const strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem
39+ // das Programm arbeiten soll
40+ const strParameter: string = ''; // Optional: Übergabeparameter an das Programm
41+ const strBeschreibung: string = ''; // Optional: Beschreibung des Shortcuts
42+ const strIconDatei: string = ''; // Optional: Datei, die das Icon enthält
43+ const intIconNummer: integer = 0 // Optional: Das wievielte Icon das aus
44+ // der Icondatei genommen werden soll
45+ // (Die Zählung der Icons begint bei 1)
46+ ): string;
47+
48+ const
49+ SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
50+ QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
51+
52+ var
53+ MyObject: IUnknown;
54+ MySLink: IShellLink;
55+ MyPFile: IPersistFile;
56+ Reg: TRegIniFile;
57+ strVerzeichnis: string = '';
58+ strLinkName: string = '';
59+ wstrDateiname: WideString = '';
60+
61+ begin
62+
63+ Result := '';
64+
65+ // Erstellt die Objekte
66+ MyObject := CreateComObject(CLSID_ShellLink);
67+ MySLink := MyObject as IShellLink;
68+ MyPFile := MyObject as IPersistFile;
69+
70+ // Erstellt den Namen des Links
71+ strLinkName := ChangeFileExt(strQuelldatei, '.lnk');
72+ strLinkName := ExtractFileName(strLinkName);
73+
74+ // Liest den Speicherort aus der Registry aus
75+ if enuSpeicherort = _QUICKLAUNCH then
76+ begin
77+ Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
78+ try
79+ strVerzeichnis := Reg.ReadString('MapGroups', 'Quick Launch', '');
80+ finally
81+ Reg.Free;
82+ end;
83+ end
84+ else
85+ begin
86+ Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
87+ try
88+ case enuSpeicherort of
89+ _OTHERFOLDER: strVerzeichnis := strUnterverzeichnis;
90+ _DESKTOP: strVerzeichnis := Reg.ReadString('Shell Folders', 'Desktop', '');
91+ _STARTMENU: strVerzeichnis := Reg.ReadString('Shell Folders', 'Start Menu', '');
92+ _SENDTO: strVerzeichnis := Reg.ReadString('Shell Folders', 'SendTo', '');
93+ end;
94+ finally
95+ Reg.Free;
96+ end;
8997 end;
90- finally
91- Reg.Free;
98+
99+ // Falls etwas schief lief ist das Programm hier zu Ende
100+ // ein Link wird dabei nicht erstellt
101+ if strVerzeichnis = '' then
102+ exit;
103+
104+ // Übergibt den Objekten die entsprechenden Parameter
105+ MySLink.SetPath(PChar(strQuelldatei));
106+ MySLink.SetArguments(PChar(strParameter));
107+ MySLink.SetDescription(PChar(strBeschreibung));
108+ // Wenn die angaben zum Icon plausibel sind werden Sie übernommen
109+ // andernfalls werden die Standardeinstellungen genommen
110+ if (strIconDatei <> '') and (intIconNummer > 0) then
111+ MySLink.SetIconLocation(PChar(strIconDatei), intIconNummer);
112+ // Legt fest, in welchem Verzeichnis der Link gespeichert wird
113+ if (strUnterverzeichnis <> '') and (enuSpeicherort <> _OTHERFOLDER) then
114+ wstrDateiname := strVerzeichnis + '\' + strUnterverzeichnis + '\' + strLinkName
115+ else
116+ wstrDateiname := strVerzeichnis + '\' + strLinkName;
117+ // Legt fest, in welchem Verzeichnis das Programm ausgeführt wird
118+ if strArbeitsverzeichnis = '' then
119+ MySLink.SetWorkingDirectory(PChar(ExtractFilePath(strQuelldatei)))
120+ else
121+ MySLink.SetWorkingDirectory(PChar(strArbeitsverzeichnis));
122+
123+ // Erstellt den Link
124+ MyPFile.Save(PWideChar(wstrDateiname), False);
125+ // Übergibt den Pfad des Links als Rückgabewert
126+ Result := string(wstrDateiname);
127+
92128 end;
93- end;
94-
95- // Falls etwas schief lief ist das Programm hier zu Ende
96- // ein Link wird dabei nicht erstellt
97- if strVerzeichnis = '' then
98- exit;
99-
100- // Übergibt den Objekten die entsprechenden Parameter
101- MySLink.SetPath(PChar(strQuelldatei));
102- MySLink.SetArguments(PChar(strParameter));
103- MySLink.SetDescription(PChar(strBeschreibung));
104- // Wenn die angaben zum Icon plausibel sind werden Sie übernommen
105- // andernfalls werden die Standardeinstellungen genommen
106- if (strIconDatei <> '') and (intIconNummer > 0) then
107- MySLink.SetIconLocation(PChar(strIconDatei), intIconNummer);
108- // Legt fest, in welchem Verzeichnis der Link gespeichert wird
109- if (strUnterverzeichnis <> '') and (enuSpeicherort <> _OTHERFOLDER) then
110- wstrDateiname := strVerzeichnis + '\' + strUnterverzeichnis + '\' + strLinkName
111- else
112- wstrDateiname := strVerzeichnis + '\' + strLinkName;
113- // Legt fest, in welchem Verzeichnis das Programm ausgeführt wird
114- if strArbeitsverzeichnis = '' then
115- MySLink.SetWorkingDirectory(PChar(ExtractFilePath(strQuelldatei)))
116- else
117- MySLink.SetWorkingDirectory(PChar(strArbeitsverzeichnis));
118-
119- // Erstellt den Link
120- MyPFile.Save(PWideChar(wstrDateiname), False);
121- // Übergibt den Pfad des Links als Rückgabewert
122- Result := string(wstrDateiname);
123-
124-end;
125129```
126130
127-\
128-Die Funktion kann wie folgt aufgerufen werden.\
131+
132+Die Funktion kann wie folgt aufgerufen werden.
129133
130-``` pascal
134+```
131135funErstelleLink(
132- 'E:\Test\Test.Exe', // Pfad und Name der Originaldatei
133- _DESKTOP, // Hier soll der Link gespeichert werden
134- '', // Optional: Ein alternativer Pfad zum speichern des Links
135- '', // Optional: Das Arbeitsverzeichnis des Programms
136- '', // Optional: Übergabeparameter an das Programm
137- 'Dies ist ein Test', // Optional: Eine Beschreibung des Shortcuts
138- 'E:\Test\Test.Exe', // Optional: Eine Datei, die das alternative Icon enthält
139- 2 // Optional: Das Icon das aus der Icondatei angezeigt werden soll
140- // (Die Zählung der Icons beginnt bei 1)
141- );
136+ 'E:\Test\Test.Exe', // Pfad und Name der Originaldatei
137+ _DESKTOP, // Hier soll der Link gespeichert werden
138+ '', // Optional: Ein alternativer Pfad zum speichern des Links
139+ '', // Optional: Das Arbeitsverzeichnis des Programms
140+ '', // Optional: Übergabeparameter an das Programm
141+ 'Dies ist ein Test', // Optional: Eine Beschreibung des Shortcuts
142+ 'E:\Test\Test.Exe', // Optional: Eine Datei, die das alternative Icon enthält
143+ 2 // Optional: Das Icon das aus der Icondatei angezeigt werden soll
144+ // (Die Zählung der Icons beginnt bei 1)
145+ );
142146```
143147
144148---
145-*From the Free Pascal wiki, page "Filelink/de", as it stood on 2020-02-15 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
149+*From the Free Pascal wiki, page "Filelink/de", as the Internet Archive kept it on 2023-03-30. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history