Difference between revisions of "Filelink/de"
m |
m (Fixed syntax highlighting; deleted category included in page template) |
||
(5 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Filelink}} | {{Filelink}} | ||
+ | <br> | ||
+ | Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br> | ||
<br> | <br> | ||
Dieses Tutorial handelt von der Windowsprogrammierung.<br> | Dieses Tutorial handelt von der Windowsprogrammierung.<br> | ||
− | Dieses Tutorial zeigt, wie man einen Dateilink erstellt.<br> | + | Dieses Tutorial zeigt, wie man unter Windows einen Dateilink erstellt.<br> |
<br> | <br> | ||
Folgende Units werden dafür benötigt: | Folgende Units werden dafür benötigt: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
uses | uses | ||
Registry, ActiveX, ComObj, ShlObj, SysUtils; | Registry, ActiveX, ComObj, ShlObj, SysUtils; | ||
Line 13: | Line 15: | ||
Diese Aufzählung muss je nachdem wo die Funktion aufgerufen wird entweder im interface oder im implementation Abschnitt der Unit deklariert werden.<br> | Diese Aufzählung muss je nachdem wo die Funktion aufgerufen wird entweder im interface oder im implementation Abschnitt der Unit deklariert werden.<br> | ||
Definition der Aufzählung: | Definition der Aufzählung: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
type | type | ||
ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER); | ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER); | ||
Line 19: | Line 21: | ||
<br> | <br> | ||
Die Funktion für das Erstellen eines Links (Dateilinks) sieht wie folgt aus: | Die Funktion für das Erstellen eines Links (Dateilinks) sieht wie folgt aus: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
− | function funErstelleLink( | + | // Diese Funktion arbeitet mit den Daten des aktuellen Users |
− | const strQuelldatei: string; | + | function funErstelleLink( // Funktionsname |
− | const enuSpeicherort: ShortcutType; // Wo soll der Shortcut gespeichert werden | + | const strQuelldatei: string; // Pfad und Name der Originaldatei |
− | strUnterverzeichnis: string = ''; // Optional: Alternativer Pfad zum | + | const enuSpeicherort: ShortcutType; // Wo soll der Shortcut gespeichert werden |
− | + | const strUnterverzeichnis: string = ''; // Optional: Alternativer Pfad zum | |
− | strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem | + | // speichern des Links |
− | + | const strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem | |
− | strParameter: string = ''; // Optional: Übergabeparameter an das Programm | + | // das Programm arbeiten soll |
− | strBeschreibung: string = ''; // Optional: Beschreibung des Shortcuts | + | const strParameter: string = ''; // Optional: Übergabeparameter an das Programm |
− | strIconDatei: string = ''; // Optional: Datei, die das Icon enthält | + | const strBeschreibung: string = ''; // Optional: Beschreibung des Shortcuts |
− | intIconNummer: integer = 0 // Optional: Das wievielte Icon das aus | + | const strIconDatei: string = ''; // Optional: Datei, die das Icon enthält |
− | + | const intIconNummer: integer = 0 // Optional: Das wievielte Icon das aus | |
− | + | // der Icondatei genommen werden soll | |
− | ): string; | + | // (Die Zählung der Icons begint bei 1) |
+ | ): string; | ||
− | |||
const | const | ||
SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer'; | SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer'; | ||
Line 44: | Line 46: | ||
MySLink: IShellLink; | MySLink: IShellLink; | ||
MyPFile: IPersistFile; | MyPFile: IPersistFile; | ||
− | |||
− | |||
− | |||
Reg: TRegIniFile; | Reg: TRegIniFile; | ||
+ | strVerzeichnis: string = ''; | ||
+ | strLinkName: string = ''; | ||
+ | wstrDateiname: WideString = ''; | ||
begin | begin | ||
Line 120: | Line 122: | ||
<br> | <br> | ||
Die Funktion kann wie folgt aufgerufen werden.<br> | Die Funktion kann wie folgt aufgerufen werden.<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
funErstelleLink( | funErstelleLink( | ||
'E:\Test\Test.Exe', // Pfad und Name der Originaldatei | 'E:\Test\Test.Exe', // Pfad und Name der Originaldatei | ||
Line 133: | Line 135: | ||
); | ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 05:40, 15 February 2020
Dieser Artikel behandelt ausschließlich Windows.
Siehe auch: Multiplatform Programming Guide/de
│
Deutsch (de) │
English (en) │
Zurück zu den Zusätzlichen Informationen.
Dieses Tutorial handelt von der Windowsprogrammierung.
Dieses Tutorial zeigt, wie man unter Windows einen Dateilink erstellt.
Folgende Units werden dafür benötigt:
uses
Registry, ActiveX, ComObj, ShlObj, SysUtils;
Um der Funktion mitzuteilen, wo der Link gespeichert werden soll wird eine Aufzählung verwendet.
Diese Aufzählung muss je nachdem wo die Funktion aufgerufen wird entweder im interface oder im implementation Abschnitt der Unit deklariert werden.
Definition der Aufzählung:
type
ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER);
Die Funktion für das Erstellen eines Links (Dateilinks) sieht wie folgt aus:
// Diese Funktion arbeitet mit den Daten des aktuellen Users
function funErstelleLink( // Funktionsname
const strQuelldatei: string; // Pfad und Name der Originaldatei
const enuSpeicherort: ShortcutType; // Wo soll der Shortcut gespeichert werden
const strUnterverzeichnis: string = ''; // Optional: Alternativer Pfad zum
// speichern des Links
const strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem
// das Programm arbeiten soll
const strParameter: string = ''; // Optional: Übergabeparameter an das Programm
const strBeschreibung: string = ''; // Optional: Beschreibung des Shortcuts
const strIconDatei: string = ''; // Optional: Datei, die das Icon enthält
const intIconNummer: integer = 0 // Optional: Das wievielte Icon das aus
// der Icondatei genommen werden soll
// (Die Zählung der Icons begint bei 1)
): string;
const
SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
Reg: TRegIniFile;
strVerzeichnis: string = '';
strLinkName: string = '';
wstrDateiname: WideString = '';
begin
Result := '';
// Erstellt die Objekte
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
// Erstellt den Namen des Links
strLinkName := ChangeFileExt(strQuelldatei, '.lnk');
strLinkName := ExtractFileName(strLinkName);
// Liest den Speicherort aus der Registry aus
if enuSpeicherort = _QUICKLAUNCH then
begin
Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
try
strVerzeichnis := Reg.ReadString('MapGroups', 'Quick Launch', '');
finally
Reg.Free;
end;
end
else
begin
Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
try
case enuSpeicherort of
_OTHERFOLDER: strVerzeichnis := strUnterverzeichnis;
_DESKTOP: strVerzeichnis := Reg.ReadString('Shell Folders', 'Desktop', '');
_STARTMENU: strVerzeichnis := Reg.ReadString('Shell Folders', 'Start Menu', '');
_SENDTO: strVerzeichnis := Reg.ReadString('Shell Folders', 'SendTo', '');
end;
finally
Reg.Free;
end;
end;
// Falls etwas schief lief ist das Programm hier zu Ende
// ein Link wird dabei nicht erstellt
if strVerzeichnis = '' then
exit;
// Übergibt den Objekten die entsprechenden Parameter
MySLink.SetPath(PChar(strQuelldatei));
MySLink.SetArguments(PChar(strParameter));
MySLink.SetDescription(PChar(strBeschreibung));
// Wenn die angaben zum Icon plausibel sind werden Sie übernommen
// andernfalls werden die Standardeinstellungen genommen
if (strIconDatei <> '') and (intIconNummer > 0) then
MySLink.SetIconLocation(PChar(strIconDatei), intIconNummer);
// Legt fest, in welchem Verzeichnis der Link gespeichert wird
if (strUnterverzeichnis <> '') and (enuSpeicherort <> _OTHERFOLDER) then
wstrDateiname := strVerzeichnis + '\' + strUnterverzeichnis + '\' + strLinkName
else
wstrDateiname := strVerzeichnis + '\' + strLinkName;
// Legt fest, in welchem Verzeichnis das Programm ausgeführt wird
if strArbeitsverzeichnis = '' then
MySLink.SetWorkingDirectory(PChar(ExtractFilePath(strQuelldatei)))
else
MySLink.SetWorkingDirectory(PChar(strArbeitsverzeichnis));
// Erstellt den Link
MyPFile.Save(PWideChar(wstrDateiname), False);
// Übergibt den Pfad des Links als Rückgabewert
Result := string(wstrDateiname);
end;
Die Funktion kann wie folgt aufgerufen werden.
funErstelleLink(
'E:\Test\Test.Exe', // Pfad und Name der Originaldatei
_DESKTOP, // Hier soll der Link gespeichert werden
'', // Optional: Ein alternativer Pfad zum speichern des Links
'', // Optional: Das Arbeitsverzeichnis des Programms
'', // Optional: Übergabeparameter an das Programm
'Dies ist ein Test', // Optional: Eine Beschreibung des Shortcuts
'E:\Test\Test.Exe', // Optional: Eine Datei, die das alternative Icon enthält
2 // Optional: Das Icon das aus der Icondatei angezeigt werden soll
// (Die Zählung der Icons beginnt bei 1)
);