2010-01-14 12 views
5

Sto terminando la codifica di una soluzione di archiviazione di documenti e ho riscontrato il seguente problema. All'interno l'interfaccia utente l'utente può premere un pulsante per aprire un file:Alternativa a Process.Start()

try 
{ 
    Process.Start(file); 
} 
catch (Exception ex) 
{ 
    //Error handling code 
} 

Il mio problema è che se l'utente non ha applicazione associata al tipo di file un'eccezione ComponentModel è gettato con un messaggio in tal senso.

Quello che preferisco fare è aprire la finestra di dialogo "Apri con" in questa situazione, c'è una chiamata di metodo che mi manca?

risposta

5

È possibile controllare il registro per verificare se esiste un'applicazione associata a quel tipo di file prima di chiamare Process.Start. In alternativa, puoi catturare l'eccezione componentmodel e aprire la finestra di dialogo aperta da lì.

+0

Usa codice da http://stackoverflow.com/questions/4638/how-do-you-create-your-own-moniker -url-protocol-on-windows-systems per esempi su come verificare che sia installato un protocollo URL –

1

No, non c'è. Penso che il tuo approccio attuale sia il migliore. Basta provare a eseguire il programma e, in caso di un'eccezione, a causa del fatto che il file non ha alcuna associazione, aprire una finestra di dialogo che consente loro di selezionare un file per eseguire il programma.

1
Process.Start("explorer.exe",file) 

potrebbe valere la pena di provare.

risolve il problema che ho avuto di aprire gli URL attraverso XP, Vista e 7