Feedback

Programmpfad mittels Erweiterung ermitteln

Sprache: C#

Anhand der Erweiterung wav, mp3, etc. kann dazu der verknüpfte Programmpfad ausgelesen werden. Die Erweiterung kann "wav" und ".wav" verarbeiten. Beispiel: //Gibt C:ProgrammeWindows Media Playerwmplayer.exe zurück GetPathFileExtention("mp3") Nicht vergessen, folgende Referenzen zu setzen: using System.IO; using System.Runtime.InteropServices; using System.Text;
[DllImport("kernel32.dll")]
static extern uint GetTempPath(uint nBufferLength, [Out] StringBuilder lpBuffer);

[DllImport("shell32.dll", EntryPoint = "FindExecutable")]
static extern long FindExecutableA(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);

/// <summary>
/// Gibt den Pfad des Programmes zurück mit der die Extension "verbunden" ist.
/// </summary>
/// <param name="extension">Dateierweiterung (pdf, mp3, ...)</param>        
public static string GetPathFileExtention(string extension)
{
    string tempFileName = Path.ChangeExtension(Path.GetTempFileName(), extension);
    string tempPathFile = Path.Combine("temp", tempFileName);
    StringBuilder sb = new StringBuilder(1024);
    File.Create(tempFileName);
    long ret = FindExecutableA(tempFileName, string.Empty, sb);
    if (ret >= 32) return sb.ToString();
    else return string.Empty;
}
[DllImport("kernel32.dll")]
static extern uint GetTempPath(uint nBufferLength, [Out] StringBuilder lpBuffer);

[DllImport("shell32.dll", EntryPoint = "FindExecutable")]
static extern long FindExecutableA(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);

/// <summary>
/// Gibt den Pfad des Programmes zurück mit der die Extension "verbunden" ist.
/// </summary>
/// <param name="extension">Dateierweiterung (pdf, mp3, ...)</param>        
public static string GetPathFileExtention(string extension)
{
    string tempFileName = Path.ChangeExtension(Path.GetTempFileName(), extension);
    string tempPathFile = Path.Combine("temp", tempFileName);
    StringBuilder sb = new StringBuilder(1024);
    File.Create(tempFileName);
    long ret = FindExecutableA(tempFileName, string.Empty, sb);
    if (ret >= 32) return sb.ToString();
    else return string.Empty;
}