Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   .GetSymLinkTarget (https://www.delphipraxis.net/206301-getsymlinktarget.html)

Willie1 8. Dez 2020 11:17

.GetSymLinkTarget
 
Hallo Leute, ich bin's schon wieder.
Das Ziel einer Verknüpfung ermitteln gab es schon oft hier. Aber jetzt gibt es doch die schöne neue Funktion
Delphi-Quellcode:
TFile.GetSymLinkTarget
. Die zweite überladene Version soll doch das Ziel der Verknüpfung im zweiten Parameter zurück liefern.
Delphi-Quellcode:
      s:=GetSourceFromLink(ONa + fName);
      if TFile.GetSymLinkTarget(ONa + fName, s) then beep;
Die erste 15 Jahre alte funktioniert die von Delphi liefert '' und false zurück. Was denke ich falsch.
Gruß Willie.

Willie1 20. Dez 2020 17:31

AW: .GetSymLinkTarget
 
Hallo Freunde*innen, ich höre nichts von euch. Ich habe es gerade nochmal ausprobiert, es wird immer ein leerer String zurück gegeben. Ich verstehe doch richtig?
Es handelt sich um eine Datei mit der Endung .lnk, die auf eine andere Datei verweist. Diese Funktion soll Pfad und Name der Zieldatei zurück geben.
Entweder verstehe ich etwas gründlich falsch oder Embarcadero hat Mist gebaut.
Willie.

Delphi.Narium 20. Dez 2020 18:11

AW: .GetSymLinkTarget
 
Ein symbolischer Link ist aber keine Linkdatei, wie z. B. die Verknüpfungen auf dem Desktop, im Startmenü ...

Verknüpfung <> symbolischer Link

https://www.windowspage.de/tipps/021555.html

Dalai 20. Dez 2020 18:51

AW: .GetSymLinkTarget
 
Nur als Ergänzung: Verknüpfungen (.lnk Dateien) gibt's schon seit Windows 95, Symlinks erst seit Windows Vista (Hardlinks und Junctions hingegen schon seit Win2k).

Informationen über Verknüpfungen bekommt man über das MSDN-Library durchsuchenIShellLink interface. Neuere Delphis haben möglicherweise schon fertige Funktionen dafür.

Grüße
Dalai

Willie1 21. Dez 2020 18:44

AW: .GetSymLinkTarget
 
Danke, das wusste ich nicht. Mir geht es um lnk. Dateien. Willie.

Willie1 22. Dez 2020 18:17

AW: .GetSymLinkTarget
 
SymLinks habe ich noch NIE benötigt. Eure Hinweise sind trotzdem interessant aber ich will das Thema so schnell wie möglich beenden!
Nur wie werde ich den SymLink wieder los?
In der Console steht: DIR ...
Datum <SymLink> Test [Testlink]

Wenn ich rmdir Test eingebe, kommt "Verzeichnisname ist ungültig."

himitsu 22. Dez 2020 18:31

AW: .GetSymLinkTarget
 
DEL

Zeigt der Synlink denn auf ein Verzeichnis?


PS: Es steht alles in der Hilfe.
https://docs.microsoft.com/de-de/win...ommands/mklink

Dalai 22. Dez 2020 18:32

AW: .GetSymLinkTarget
 
Versuch mal
Code:
del symlink
Letztlich ist ein Symlink auch nur eine (spezielle) Datei. Vermutlich geht das Löschen inzwischen auch per Explorer. Das war früher anders und das Ziel des Links wurde entsorgt (mit einem ordentlichen Dateimanager passiert sowas nicht ;)).

Grüße
Dalai

Willie1 23. Dez 2020 16:08

AW: .GetSymLinkTarget
 
Hallo, da ist ein Thema völlig an mir vorbei gegangen, eben weil ich es nicht brauchte. Jetzt habe ich es mit eurer Hilfe verstanden. Geht das nicht auch teilweise mit dem alten Subst aus MS-DOS Zeiten?
Ich war ja auf dieses Thema gekommen, weil ich eine Dateiliste mit TDirectory.GetFiles ermittelten Link-Dateien noch ihrem Ziel zuordnen muss.
Gibt es denn eine eingebaute Funktion GetLinkTarget?
Willie.

Dalai 23. Dez 2020 18:35

AW: .GetSymLinkTarget
 
Zitat:

Zitat von Willie1 (Beitrag 1479783)
Geht das nicht auch teilweise mit dem alten Subst aus MS-DOS Zeiten?

Subst ist nochmal etwas anderes. Dabei wird ein neues (virtuelles) Laufwerk erzeugt, das auf einen bestimmten Pfad zeigt. Sowas verwenden einige Leute gern, um einen kurzen Weg in einen (über)langen Pfade zu bekommen. Symlinks haben zum Teil einen ähnlichen Zweck, unterscheiden sich dann aber doch von gesubsteten Pfaden, weil sie z.B. relativ sein können (subst geht nur mit absoluten Pfaden), kein Laufwerk erzeugen etc.

Zitat:

Gibt es denn eine eingebaute Funktion GetLinkTarget?
Keine Ahnung, ob Delphi fertige Funktionen um das IShellLink interface hat. Such einfach mal hier im Forum oder im Internet, ob das der Fall ist. Wenn nicht, findet sich dabei mit Sicherheit benutzbarer Code oder gar ganze Units. Ich kann mich erinnern, Units/Klassen um IShellLink gesehen zu haben, als ich vor einigen Jahren selber mit dem Thema zu tun hatte (und meine eigene Klasse bastelte).

Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz