Autor Beitrag
FunkyT
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 26.10.07 11:00 
Ich habe unter VISTA Probleme mit dem echten Pfadnamen bzw. dem Link darauf:
Die Funktion ParamStr(0) bzw. Application.Exename liefert bei direktem Aufruf meiner Test.Exe 'c:\program files\myApp\Test.Exe'. Bei Aufruf der Exe mittels eines weiteren Programms über DDE wird ebenfalls dieser korrekte Pfad geliefert, falls im aufrufenden Programm der Pfad der "DDE.ServiceApplication" auf 'C:\program files\myApp\Test.Exe' zeigt.
Soweit ist das alles wunderbar.

Ist im aufrufenden Program jedoch der Pfad der "DDE.ServiceApplication" auf den lokalisierten (Link-)Pfad 'C:\PROGRAMME\myApp\Test.Exe' gesetzt, so liefert Application.Exename der aufgerufenen Test.Exe den lokalisierten (Link-)Pfad 'C:\PROGRAMME\myApp\Test.Exe' zurück.

Es ist kein Unterschied, ob ich Application.ExeName oder ParamStr (0) verwende.
Dieses nette Verhalten bereitet mir einige Kopfschmerzen...

Ich habe schon diverse Foren durchsucht, aber keine Funktion gefunden, welche diese lokalisierten Links in reale Pfade (oder umgekehrt) konvertiert. Die Api-Funktion SHGetLocalizedName ist z.B. auf Pfade nicht anwendbar.
Kenn jemand eine Lösungsmöglichkeit für dieses Problem ?

1000nd Dank schonmal !
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 27.10.07 10:34 
Ich kenn dieses Verhalten bereits von Windows 2000, dort aber in einem anderen Zusammenhang. Bereits unter Windows 2000 konnte man einzelne Volumes mounten; nicht nur als Laufwerksbuchstabe, sondern auch als Verzeichnis (womit teilweise nicht mal Microsoft's eigene Programme zurecht kommen).

Problem ist nun: Was ist in diesem Fall der korrekte Pfad. Angenommen, mein Programme-Verzeichnis ist sowohl in C:\Programme, als auch D: eingehängt (was es wirklich ist), dann ist sowohl C:\Programme\MeineTest.Exe als auch D:\MeineTest.exe ein gültiger Bezeichner, um diese Datei zu identifizieren.

Wenn du nun wissen möchtest, ob beide Pfade auf die gleiche Datei zeigen, bleibt dir nix anderes zu tun, als die virtuellen Mount-Points auszuwerten und dann die Volume-Pfade zu vergleichen ... Schau Dir ggf. mal MountVol (Kommandozeilen-Befehl) an.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.