Im Dateidialog eine Verknüpfung verfolgen
spacer
Autor Nachricht
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 107


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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 107


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 markieren
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: String; var 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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home