2015-06-08 15 views
7

In meiner Anwendung möchte ich in der Lage sein, eine Datei mit einem beliebigen Namen und Erweiterung unter Verwendung das Programm mit einer anderen Erweiterung verbunden.Wie führe ich eine Datei mit einer verknüpften Anwendung einer anderen Erweiterung aus?

Zum Beispiel sagen, ich habe eine Datei namens file.dat, aber ich wollte es mit dem Editor öffnen, als ob es file.txt oder file.dat.txt benannt wurde. Außerdem habe ich keine Berechtigung, die Datei umzubenennen, also kommt das nicht in Frage. Wenn die Datei file.txt genannt wurde, konnte ich ShellExecute anrufen. Aber das schlägt fehl beim Aufruf file.dat; Windows beschwert sich, dass es keine Zuordnung für diese Datei gibt.

Ich möchte eine bestimmte ausführbare Datei nicht hartcodieren, weil der Endbenutzer .txt Dateien mit Wordpad anstelle von Editor (in dem obigen Beispiel) verknüpft sein konnte. In diesem Fall möchte ich, dass meine file.dat mit Wordpad geöffnet wird.

Antwort

10

Rufen Sie ShellExecuteEx an und geben Sie das lpClass Mitglied der SHELLEXECUTEINFO Struktur an. Beachten Sie, dass Sie SEE_MASK_CLASSNAME in das fMask Mitglied einschließen müssen.

Setzen Sie beispielsweise lpClass auf '.txt', um anzufordern, dass die Datei mit dem Programm geöffnet wird, das der Erweiterung .txt zugeordnet ist.