Problem beim Ermitteln des Ordners der verknüpften Anwendung

19/06/2011 - 12:04 von Anonymous | Report spam
Hallo,

ich möchte mit diesen VB.NET-Zeilen den Ordner ermitteln, der die mit einer
Dateiendung verknüpfte exe enthàlt. Das verknüpfte Programm làßt sich
problemlos ermitteln, aber wenn ich mit dieser Pfadangabe den Ordner des
Programms mit GetDirectoryName ermitteln will, kommt der Fehler es wàre ein
illegales Zeichen im Pfad.

Danke Peter



Private Declare Function FindExecutable Lib "shell32.dll" Alias
"FindExecutableA" ( _
ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As
String) As Long

Public Shared Function GetVerknuepftesProgrammOrdner(ByVal endung As String)
As String
Dim _exe As String = New String(" "c, 255)
Dim _datei As String = (My.Computer.FileSystem.GetTempFileName + "." +
endung)
Dim _swr As System.IO.StreamWriter = System.IO.File.CreateText(_datei)
_swr.Write("")
_swr.Close()

FindExecutable(_datei, vbNullString, _exe)
_exe = _exe.Trim
Kill(_datei)
Return IO.Path.GetDirectoryName(_exe)

End Function
 

Lesen sie die antworten

#1 Armin Zingler
19/06/2011 - 15:50 | Warnen spam
Am 19.06.2011 12:04, schrieb :
Hallo,

ich möchte mit diesen VB.NET-Zeilen den Ordner ermitteln, der die mit einer
Dateiendung verknüpfte exe enthàlt. Das verknüpfte Programm làßt sich
problemlos ermitteln, aber wenn ich mit dieser Pfadangabe den Ordner des
Programms mit GetDirectoryName ermitteln will, kommt der Fehler es wàre ein
illegales Zeichen im Pfad.

Danke Peter



Wenn du dich nicht auf die Ausführung als 64-Bit-Prozess beschrànken willst,
dann musst du als Rückgabetyp IntPtr verwenden:


Private Declare Auto Function FindExecutable Lib "shell32.dll" ( _
ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As IntPtr


Im übrigen, wenn du keinen StringBuilder als Out-Parameter verwendest, dann
musst du selbst bis zum Chr(0) abschneiden. Trim entfernt nur Leerzeichen.

Public Shared Function GetVerknuepftesProgrammOrdner(ByVal endung As String) As String
Dim _exe As String = New String(" "c, 255)
Dim _datei As String = IO.Path.GetTempFileName + "." + endung
Dim _swr As System.IO.StreamWriter = System.IO.File.CreateText(_datei)
_swr.Write("")
_swr.Close()

FindExecutable(_datei, Nothing, _exe)
_exe = _exe.Substring(0, _exe.IndexOf(Chr(0)))
IO.File.Delete(_datei)
Return IO.Path.GetDirectoryName(_exe)

End Function

Da Microsoft den eigenen Newsgroup-Support vor über einem Jahr eingestellt
hat, solltest du zukünftig Fragen an de.comp.lang.dotnet.vb richten.

Armin

Ähnliche fragen