11
votes

Open CHM (fichier d'aide) en C #

J'essaie d'ouvrir un fichier d'aide (extension CHM) dans C #.

FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);


10 commentaires

"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 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?


7 Réponses :


1
votes

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"


0 commentaires

26
votes

Vous pouvez utiliser - xxx pré>

si vous supposez que vous êtes sous une forme / contrôle p> xxx pré>

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>

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> xxx pré>

par exemple: p>

hh.exe -decompile C:\foo\helpchmextracted help.chm


1 commentaires

Comment afficher l'aide de la même forme de victoire?



2
votes

Ajout de mes commentaires à une réponse conformément à la demande:

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 , 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:

Decompiling CHM (Aide) Fichiers avec C #

extracteur de fichier d'aide CHM


0 commentaires

0
votes

simple faire cela

help.showhelp (parentform, "chmfile.chm", "link.htm");


1 commentaires

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.



6
votes
        if (System.IO.File.Exists(helpFileName))
        {
            System.Diagnostics.Process.Start(helpFileName);              
        }

0 commentaires

1
votes
 Help.ShowHelp(this, AppDomain.CurrentDomain.BaseDirectory+"\\test.chm", HelpNavigator.Topic, "Welcome.htm");
Welcome is id of the welcome age in chm file

0 commentaires

1
votes

system.diagnostics.process.start (@ "c: \ helt.chm");


1 commentaires

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.