Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 10.11.09 16:06 
Ein freundliches Hallo an alle,

ich möchte im Datei-öffnen-Dialog einer Verknüpfung (.lnk) folgen, z.B. zu einem anderen Ordner. Im Windows Explorer klappt das hervorragend nur leider in Delphi 4 bisher nicht. Gibt es eine Procedure oder Systemaufruf mit dem ich den Pfad bekomme oder der Pfad umgestellt wird?

Dank euch im Voraus und Grüße von der Nordsee

Peter


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 15.09.2011 um 18:47
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Do 15.09.11 17:13 
Ein freundliches Hallo an alle,

für diejenigen, die das gleiche Problem vor sich herschieben, hier die Lösung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure GetLinkInfo(const LinkName: Stringvar LinkObject,Arguments,Description: String);
var
  IObject        : IUnknown;
  ILink           : IShellLink;
  IFile           : IPersistFile;
  sObj,sArg,sDcr : Array [0..Max_Path] of Char;
  Find           : WIN32_FIND_DATA;
  LinkFile       : WideString;
  h               : THandle;

begin
  LinkFile:= LinkName;
  IObject := CreateComObject(CLSID_ShellLink);
  ILink   := IObject as IShellLink;
  IFile   := IObject as IPersistFile;

  h := FindFirstFile(PChar(LinkName), Find);
  If h <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(h);
    IFile.Load(PWChar(LinkFile), STGM_READ);
    ILink.GetPath(@sObj, Max_Path, Find, SLGP_RAWPATH);
    ILink.GetArguments(@sArg, Max_Path);
    ILink.GetDescription(@sDcr, Max_Path);
  end;
  LinkObject  := sObj;
  Arguments    := sArg;
  Description := sDcr;
end;

Sie ist sehr tief in der Hilfe versteckt. Da muß man lange und tief graben.

Ich hoffe damit jemanden helfen zu können und sende freundliche Grüße von der Nordsee :D

Peter