2010-01-14 6 views
5

Je suis en train de terminer le codage d'une solution de stockage de documents et j'ai rencontré le problème suivant. Au sein de l'interface utilisateur, l'utilisateur peut appuyer sur un bouton pour ouvrir un fichier:Alternative à Process.Start()

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

Mon problème est que si l'utilisateur n'a pas d'application associée au type de fichier une exception ComponentModel est lancée avec un message à cet effet.

Ce que je préfère faire est de faire apparaître le dialogue "Ouvrir avec" dans cette situation, y at-il un appel de méthode qui me manque?

Répondre

5

Vous pouvez vérifier le Registre pour voir si une application est associée à ce type de fichier avant d'appeler Process.Start. Alternativement, vous pouvez attraper l'exception componentmodel et ouvrir l'ouvert avec la boîte de dialogue à partir de là.

+0

Utilisez le code de http://stackoverflow.com/questions/4638/how-do-you-create-your-own-moniker -url-protocol-on-windows-systems pour des exemples de vérification de l'installation d'un protocole URL –

1

Non, il n'y en a pas. Je pense que votre approche actuelle est la meilleure. Essayez simplement d'exécuter le programme, puis en cas d'exception, en raison de l'absence d'association du fichier, ouvrez une boîte de dialogue leur permettant de sélectionner un fichier pour exécuter le programme.

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

vaut peut-être la peine d'essayer aussi.

Résout la question que j'avais d'ouvrir les URL dans XP, Vista et 7