2015-06-08 28 views
7

Nella mia applicazione, vorrei poter eseguire un file con un nome e un'estensione arbitrari utilizzando il programma associato a un'estensione diversa.Come eseguire un file con un'applicazione associata a un'altra estensione?

Ad esempio, supponiamo di avere un file chiamato file.dat, ma ho voluto aprirlo con Blocco note, come se fosse denominato file.txt o file.dat.txt. Inoltre, non ho il permesso di rinominare il file, quindi è fuori questione.

Se il file era chiamato file.txt, potrei chiamare ShellExecute. Ma ciò non riesce quando si chiama file.dat; Windows lamenta che non esiste alcuna associazione per quel file.

Non voglio eseguire l'hardcode di un eseguibile specifico, perché (nell'esempio sopra) l'utente finale avrebbe potuto associare i file .txt a Wordpad anziché a Blocco note. In tal caso, vorrei che il mio file.dat venga aperto con Wordpad.

risposta

10

Chiamare ShellExecuteEx e specificare il membro lpClass della struttura SHELLEXECUTEINFO. Si noti che è necessario includere SEE_MASK_CLASSNAME nel membro fMask.

Ad esempio, impostare lpClass su '.txt' per richiedere l'apertura del file con il programma associato all'estensione .txt.

Problemi correlati