J'essaie d'ouvrir un fichier d'aide (extension CHM) dans C #.
FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);
7 Réponses :
Eh bien, la deuxième ligne devrait être correcte, si le fichier n'existe pas, il devrait lancer une exception. Besoin d'être plus précis sur ce que vous entendez par "ça ne marche pas" p>
Vous pouvez utiliser - si vous supposez que vous êtes sous une forme / contrôle p> lire system.windows.forms.help.showhelp sur msdn p> décompilation d'un fichier CHM fort> p> est aussi simple que l'exécution de la commande ci-dessous dans l'invite de commande. p> par exemple: p> showhelp code> La méthode fournit également des surcharges pour accéder à une rubrique spécifique et à une page d'aide à l'intérieur du fichier d'aide HTML compilé. P> hh.exe -decompile C:\foo\helpchmextracted help.chm
Comment afficher l'aide de la même forme de victoire?
Ajout de mes commentaires à une réponse conformément à la demande: p>
Il semble que le nom du fichier dans la première instruction n'est pas correct mais le second
devrait fonctionner sauf si le fichier est verrouillé, n'existe pas ou que vous n'avez pas d'autorisations pour accéder au fichier. Si vous souhaitez immerger le fichier, vous devez utiliser la classe system.diagnostics.process code>, mais si vous souhaitez extraire le contenu de la CHM, car est compilé et formaté, il ne peut pas être lu comme Fichiers texte simples.
Jetez un coup d'œil à ces liens: P>
simple faire cela p>
help.showhelp (parentform, "chmfile.chm", "link.htm"); em> strong> p> p>
Un commentaire ici. En utilisant cette méthode, il est agréable que vous puissiez ouvrir l'aide à un sujet spécifique. Cependant, cette méthode verrouille le fichier CHM jusqu'à la fermeture de votre fichier exécutable. Peu importe que vous fermez le fichier CHM, le fichier sera verrouillé pour toujours. Si vous devez mettre à jour le fichier CHM, mieux utiliser la méthode Process.Start. Vous n'aurez plus la capacité d'ouvrir un sujet spécifique, mais au moins, vous pouvez mettre à jour le fichier si nécessaire. Dans mon cas, je devais mettre à jour le fichier d'aide en téléchargeant une nouvelle version de celui-ci. Si j'avais ouvert le fichier d'aide avant, je ne pouvais plus le mettre à jour.
if (System.IO.File.Exists(helpFileName))
{
System.Diagnostics.Process.Start(helpFileName);
}
Help.ShowHelp(this, AppDomain.CurrentDomain.BaseDirectory+"\\test.chm", HelpNavigator.Topic, "Welcome.htm"); Welcome is id of the welcome age in chm file
system.diagnostics.process.start (@ "c: \ helt.chm"); code> p>
Veuillez lire stackoverflow.com/help/how-to-answer et améliorer votre réponse. Essayez d'expliquer pourquoi votre code diffère de la question.
"Ne fonctionne pas" n'est pas une bonne description du problème. Comment ça ne marche pas exactement?
Il n'ouvre pas le fichier ou l'erreur: le chemin UNC doit être du formulaire \\ Server \ Share
Il semble que le nom du fichier dans la première instruction ne soit pas correct, mais le second doigt que celui-ci ne devrait fonctionner que si le fichier n'est pas verrouillé, n'existe pas ou que vous n'avez pas d'autorisations pour accéder au fichier.
@Bodo Voulez-vous ouvrir le fichier à partir d'un chemin réseau? Ensuite, il devrait être @ "\\ ServerName \ Path \ FileName" et vous devez être autorisé et avoir des autorisations.
Quand j'utilise la deuxième méthode - rien ne se passe. Pas d'erreur, pas de fichier de chargement. Rien. Non, non d'un chemin réseau. J'ai utilisé // pour ouvrir le fichier dans le catalogue d'applications.
Après avoir ouvert le fichier, vous devez lire le contenu de l'objet FileStream. Je ne suis pas sûr, mais il semble que vous souhaitiez shellexecute le fichier, si oui, cela est complètement non pertinent pour les objets filestream; Pensez à utiliser
System.Diagnostics.process code> classe.J'essayais de le faire selon csharp-examples.net/filetream-open-file < / a>. Alors, quel est le moyen le plus simple d'ouvrir ce fichier d'aide?
Le contenu de CHM est compilé et formaté, ce n'est pas un texte brut et ne peut pas être lu comme celui-ci. Jetez un coup d'œil à ceci: codeproject.com/kb/cs/decompilingchm.aspx Et ceci: XtractPro.com/articles/help-file-extractor.aspx
@fardjad: Pouvez-vous mettre vos commentaires dans une réponse?
@Bodo Voulez-vous ouvrir programmation le fichier ou souhaitez-vous appeler le fichier CHM dans une fenêtre HH séparée?