Entwickler-Ecke

Sonstiges (.NET) - Dateien mit dazugehörigem Programm öffnen?


weTTexFry - Di 28.07.09 08:04
Titel: Dateien mit dazugehörigem Programm öffnen?
Hallo,

Ich suche ein kleines code-schnipsel mit dem ich Dateien je nach endung mit dem dazugehörigen Programm öffne.

z.b. *.txt -> Windows-Standard: Notepad
z.b. *.doc -> Windows-Standard: Word

und ich möchte nicht für jede endung selbst ein Programm auswählen, denn ich weiß ja nicht was der end-user auf seinem Rechner für standards hat ;-) (z.b. er hat kein word sondern openoffice als standard, dann soll er *.doc mit openoffice öffnen, oder statt notepad hat er notepad++, ...)

Wenn ich eine endung hab die mit keinem Programm verknüpft ist soll der "Open With"-Dialog (ka wie der jetzt auf deutsch heißt) kommen, wo man sich dann ein Programm aussuchen kann.

mfg weTTexFry

ps: das programm wird nur unter windows laufen


jaenicke - Di 28.07.09 08:40

Hallo und :welcome: !

Wie wäre es mit Process.Start? ;-)
Als Parameter einfach den Dateinamen übergeben, fertig.


weTTexFry - Di 28.07.09 08:47

Man bin ich dämlich, ich such google rauf und runter mit dem themen-namen aber find nix und derweil hätt ich nur...
okay lassen wir das, danke @ jaenicke

thema kann noch nicht geclosed werden wenn ich irgendeine endung nehme, dann kommt ein error:
"System.ComponentModel.Win32Exception: No application is associated with the specified file for this operation..." dann kommt das Pocess.Start mit den parametern

wie start ich jetzt diesen "Open With"-Dialog??


jaenicke - Di 28.07.09 09:17

Der liegt in der shell32.dll, die Funktion heißt OpenAs_RunDLL und erwartet den Pfad als Parameter. Also musst du das nur aufrufen.

C#-Quelltext
1:
Process.Start("rundll32.exe""shell32.dll, OpenAs_RunDLL " + YourFilePath);                    

Nebenbei werden hier erledigte Threads nicht geschlossen, es reicht ja, wenn diese vom Ersteller als erledigt markiert sind. ;-)


weTTexFry - Di 28.07.09 09:26

okay, jetzt funktioniert alles, danke nochmal