Appel de l'aide MS Helper
Bonjour les amis,
Pour un logiciel de mon entreprise, je dois mettre à jour l'aide ainsi que son appel.
J'avais donc opté pour un fichier d'aide .CHM, j'ai conçu ma méthode et tout allait (presque) parfaitement. Sauf que au-dessus, on m'a expliqué que l'interface du fichier .CHM étant trop "laide", il fallait opter pour un autre moyen.
Avec l'aide de DocToHelp, j'ai étudié les différents formats, et après sélections et tests, j'ai décidé d'utiliser MS Helper.
J'ai galéré pour pouvoir trouver le logiciel pour ouvrir le format .mshi. A coté de ça, j'ai adapté ce que j'avais fait pour le .CHM, dont voici l'extrait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
/// <summary>
/// Appelle le fichier d'aide
/// </summary>
/// <param name="e"></param>
/// <param name="fichierAide">Chemin entier du fichier d'aide (nom de fichier compris ainsi que l'extension)</param>
/// <param name="topic">Nom du topic</param>
public static void CallAide(System.Windows.Input.KeyEventArgs e, string fichierAide, string topic)
{
try
{
if (fichierAide == "")
{
// Valeur en dure à changer
IniReader lecteurIni = new IniReader("C:\\HelpAide.ini");
string helpFileIni = lecteurIni.ReadString("HELP", "HELP_FILE");
//Chemin du fichier d'aide trouvé dans le fichier ini
if (helpFileIni != "")
{
fichierAide = helpFileIni;
if (topic == "")
{
// Information redirection
MessageBox.Show("Aucun topic n'a été trouvé ou spécifié : vous allez être redirigé à la page d'accueil de l'aide.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
//Ouvre le fichier d'aide à la page de démarrage
System.Windows.Forms.Help.ShowHelp(null, fichierAide);
//Passe la fenêtre qui affiche le pb
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
}
else
{
//Ouvre le fichier avec ce topic
System.Windows.Forms.Help.ShowHelp(null, fichierAide);
//Passe la fenêtre qui affiche le pb
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
//Permet de se placer sur l'onglet index
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{RIGHT}");
SendKeys.SendWait("{TAB}");
//Ecrit le mot clé dans la zone de texte
SendKeys.SendWait(topic);
//Appui sur entré pour valider la recherche
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
}
}
else //Chemin du fichier d'aide pas trouvé dans le fichier ini
{
MessageBox.Show("Aucun fichier d'aide n'a été spécifié ou n'a pu être trouvé. L'aide ne peut donc pas s'ouvrir.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
if (topic == "")
{
// Information redirection
MessageBox.Show("Aucun topic n'a été trouvé ou spécifié : vous allez être redirigé à la page d'accueil de l'aide.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
//Ouvre le fichier d'aide à la page de démarrage
System.Windows.Forms.Help.ShowHelp(null, fichierAide);
//Passe la fenêtre qui affiche le pb
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
}
else
{
//Ouvre le fichier avec ce topic
System.Windows.Forms.Help.ShowHelp(null, fichierAide);
//Passe la fenêtre qui affiche le pb
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
//Permet de se placer sur l'onglet index
SendKeys.Send("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{RIGHT}");
SendKeys.SendWait("{TAB}");
//Ecrit le mot clé dans la zone de texte
SendKeys.SendWait(topic);
//Appui sur entré pour valider la recherche
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
}
}
}
catch (Exception exp)
{
//MessageBox.Show("Erreur lors de la recherche du fichier : " + exp.ToString(), "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
} |
Et voici l'appel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
else if (e.Key == Key.F1)
{
try
{
//Fichier d'aide -- A CHANGER
string file = "C:\\blabla\\testFileAide.mshi";
string station = "stations";
string variables = "variables";
//Topic a récupérer
//string topic = "";
InterfaceCpp.CallAide(e, file, variables);
}
catch (Exception exxx)
{
}
} |
Contrairement au fichier .CHM, les paramètres permettant l'accès à la page d'index et de recherches ne fonctionnent pas dans le fichier .MSHI.
Du coup, comme vous pouvez le voir, j'utilise SendKeys.Send() pour simuler les touches du clavier pour pouvoir effectuer une recherches. Sauf que je trouve ca complètement bourrin et que surtout, cela ne fonctionne que la moitié du temps..
J'aimerai donc savoir si vous avez une idée :
- Soit pour un autre type de fichier d'aide, beau et facile d'accès;
- Soit pour une meilleure manipulation des fichiers MS Helper.
Précisions :
- Lors de l'ouverture du fichier .MSHI, un message d'erreur apparaît disant qu'il ne trouve pas le fichier, puis après il me l'ouvre quand même.
- Le topic est une variable dans laquelle se trouve l'utilisateur dans le logiciel, et ce pourquoi on effectue la recherches dans des index prédéfinis dans le fichier d'aide sur DocToHelp.
Merci :D