la fonction par example :
HtmlHelp(0, PChar('MonFichierHelp.chm'), HH_DISPLAY_TOC, 0);
fonctionne sous XP 32 bits mais sous Windows seven 64 bits elle génère un message d'erreur type violation d'accés;
voila ce qui a été dit dans le tutoriel dont l'adresse est dans mon 1er message:
///Implémentez la fonction HelpHook de la manière suivante :
1 2 3 4 5 6 7 8 9 10
| function TfrmMain.HelpHook(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;
begin
CallHelp := False; //Désactivation des appels à l'aide 16-bit
//Test sur le paramètre Command qui permet de savoir le type d'aide à ouvrir
if (Command in [Help_Context]) then
HtmlHelp(0, PChar(mHelpFile), HH_HELP_CONTEXT, Data) //Ouverture de l'aide
else
CallHelp := true; //En cas d'erreur, réactivation des appels à l'aide 16-bit
result := true;
end; |
Votre fonction créée, il faut maintenant rediriger tous les appels à l'aide 16-bit vers l'aide 32-bit. Pour cela, placez-vous sur la form principale (frmMain) et implémenter la procédure FormCreate :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| procedure TfrmMain.FormCreate(Sender: TObject);
begin
//Redirection des appels à l'aide 16-bit vers notre gestionnaire d'évènement
Application.OnHelp := HelpHook;
//Recherche du chemin du fichier d'aide
mHelpFile := ExtractFilePath(ParamStr(0)) + 'sample.chm';
mHelpFile := ExpandFileName(mHelpFile);
if not FileExists(mHelpFile) then //Déclenché si le fichier d'aide est introuvable
ShowMessage('Le fichier d''aide est introuvable !');
//Vérification de la version de HTML Help installé dans le système
if (hh.HHCtrlHandle = 0)
or (hh_funcs._hhMajVer < 4)
or ((hh_funcs._hhMajVer = 4) and (hh_funcs._hhMinVer < 73)) then
ShowMessage('Vous devez installer la version 1.2 ou supérieure de Microsoft HTML Help !');
end; |
///
voila donc je sais pas si le problème réside dans ces lignes de code!
Partager