Difference between revisions of "Filelink/de"

From Lazarus wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting; deleted category included in page template)
 
(6 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(             // Funktionsname
+
// Diese Funktion arbeitet mit den Daten des aktuellen Users
   strQuelldatei: string;              // Pfad und Name der Originaldatei
+
function funErstelleLink(                   // Funktionsname
   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
                                      //    speichern des Links
+
   const strUnterverzeichnis: string = '';  // Optional: Alternativer Pfad zum
   strArbeitsverzeichnis: string = ''; // Optional: Pfad oder Verzeichnis in dem
+
                                            //    speichern des Links
                                      //    das Programm arbeiten soll
+
   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
                                      //    der Icondatei genommen werden soll
+
   const intIconNummer: integer = 0          // Optional: Das wievielte Icon das aus
                                      //    (Die Zählung der Icons begint bei 1)
+
                                            //    der Icondatei genommen werden soll
   ): string;
+
                                            //    (Die Zählung der Icons begint bei 1)
 +
   ): string;                                                                          
  
  // Diese Funktion arbeitet mit den Daten des aktuellen Users
 
 
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;
  strVerzeichnis: string;
 
  strLinkName: string;
 
  wstrDateiname: WideString;
 
 
   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>
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 10:30, 18 April 2013 (UTC)
 
[[Category:Tutorials/de]]
 

Latest revision as of 05:40, 15 February 2020

Windows logo - 2012.svg

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)
    );