Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
Ich habe ein Lösung gefunden:<br>
<br>
function GetLinkedFileName (Const aPath: String; VAR Link:TWin32FindData):String;<br>
// zu einem Link (Extension LNK) die Originaldatei suchen <br>
// Parameter: aPath: absoluter Pfad des Link<br>
// Link: FindData Struktur des Link (etwa aus FindFirst ...<br>
// Ergebnis: Original Dateiname inkl. Pfad bei Erfolg, sonst Leerstring<br>
var<br>
aObject : IUnknown;<br>
aSLink : IShellLink;<br>
aPFile : IPersistFile;<br>
sDirectory : Array[0..MAX_PATH-1] OF Char;<br>
wsFileName : WideString;<br>
HRes: HResult;<br>
Begin<br>
Result := '';<br>
FillChar(sDirectory, SizeOf(sDirectory), #0);<br>
aObject := CreateComObject(CLSID_ShellLink);<br>
// Verbindung zum IShellLink-Interface herstellen<br>
aSLink := aObject as IShellLink;<br>
aPFile := aObject as IPersistFile;<br>
wsFileName := aPath+Link.cFileName;<br>
Hres := aPFile.Load(PWChar(wsFileName),STGM_READ);<br>
IF HRes <> S_OK Then Exit;<br>
with aSLink do begin<br>
// Resolve aktualisiert den LINK<br>
Hres := Resolve(HWND(NIL),SLR_ANY_MATCH + SLR_NO_UI); //NO_UI verhindert PoUp (darum kann hWnd NIL sein)<br>
IF HRes <> S_OK Then Exit;<br>
// GetPath ermittelt das Original<br>
Hres := GetPath(sDirectory,MAX_PATH,Link,SLGP_UNCPRIORITY );<br>
IF HRes <> S_OK Then Exit;<br>
Result := sDirectory;<br>
end;<br>
End;<br>
Ic habe das Gefühl, es sollte auch einen einfacheren Weg geben, aber so gehts jedenfalls auch <br>
Pete
Dein Gefühl trügt Dich nicht, es geht viel einfacher: Über die Komponente TShellLink.
Beispiel zum Auslesen einer Verknüpfung:
<b>var Link : TShelllink;
if OpenDialog.Execute then
<br> begin
<br> if ExtractFileExt(lowerCase(OpenDialog.FileName))='.l nk' then
<br> begin
<br> Link:=TShellLink.Create;
<br> Link.LoadFromFile(OpenDialog.FileName);
<br> Pfad:=Link.Path;
<br> Para:=Link.Arguments;
<br> Link.Free;
<br> end;</b>
Diese Komponente gibt es kostenlos bei: http://homepages.regio.net/Thorsten.Vitt/main.html
Comment