Feedback

C# - Herausfinden welches Programm ein bestimmtes Dokument öffnet

Veröffentlicht von am 27.04.2008
(4 Bewertungen)
Welches Programm ist mit einem entsprechendem Dokument (z.B. Excel mit XLS) verknüpft?

Dies ermittelt diese Funktion. Es reicht, wenn die Datei existiert, sie muss nicht den entsprechden Inhalt haben.

So könnte eine leere "temp.xls" erstellt, die entsprechende Exe davon ermittelt und dann die "temp.xml" wieder gelöscht werden.
using System.Runtime.InteropServices;

// public class ........ {
// Api Deklarieren
[DllImport("shell32.dll", EntryPoint = "FindExecutable")]
public static extern long FindExecutableA(
  string lpFile, string lpDirectory, StringBuilder lpResult);

/// <summary>
/// Übergibt den Pfad zum Programm, das mit der angegebenen Datei verknüpft ist (z.B. JPG mit C:\...\IrfanView.exe)
/// </summary>
/// <param name="Path">Pfad zur Datei dessen Verknüpfung ermittelt werden soll</param>
/// <returns></returns>
public static string FindExe(string Path)
{
    StringBuilder objResult = new StringBuilder(1024);
    long lngResult = 0;

    lngResult = FindExecutableA(Path, "", objResult);

    if (lngResult >= 32)
    {
        return objResult.ToString();
    }

    return "";
}

// }

5 Kommentare zum Snippet

Kosmo schrieb am 27.04.2008:
Um ein Bild mit der Standard-Anwendung zu öffnen reicht Process.Start völlig. Das müsste auch dem cmd-Befehl "start" entsprechen.

Folgende Zeile tuts bei mir z.B. völlig:
Process.Start(@"C:\Users\Test\Desktop\IMG_0519.JPG");
Jan Welker schrieb am 27.04.2008:
Hallo Kosmo,
ich glaube, es nicht darum das Bild zu öffnen, sondern darum, herrauszufinden, was als Standard-Anwendung definiert wurde.
Jan
Kosmo schrieb am 27.04.2008:
Ich weiß, von der Seite her ist das Snippet auch nicht uninteressant.
Ich wollte es nur erwähnen, da Carsten hier laut seiner Beschreibung komplizierter an das Problem rangegangen ist als es nötig ist.
Carsten Schlegel schrieb am 28.04.2008:
Die Beschreibung war etwas weit hergeholt. Hab sie entsprechend korrigiert.
Firendeath schrieb am 09.07.2010:
So könnte eine leere "temp.xls" erstellt, die entsprechende Exe davon ermittelt und dann die "temp.xml" wieder gelöscht werden.
Was den nun temp.xls oder temp.xml ?
'~'
 

Logge dich ein, um hier zu kommentieren!