Hallo,
bei der Verwendung der Kontexthilfe innerhalb einer
DLL kommt es bei uns unter Delphi2007 zu einer
Exception, sobald die
DLL entladen wird. Ohne die
Unit HTMLHelpViewer tritt der Fehler nicht auf, aber natürlich funktioniert dann die Kontexthilfe auch nicht.
Nach einigen Änderungen am HTMLHelpViewer (in Anlehnung an
http://www.helpware.net/FAR/far_faq.htm#HH_CLOSE_ALL) funktioniert nun bei Verwendung einer HLP-Hilfe alles korrekt, aber bei Verwendung einer CHM-Hilfe kommt es hin und wieder immer noch zu einer
Exception, wenn man das Fenster der Hilfe nicht schließt bevor die
DLL entladen wird. Obwohl das Fenster nach dem Schließen mittels SendNotifyMessage+WM_CLOSE (und einigen Sekunden Sicherheits-Sleep) auch verschwindet, tritt das Problem dennoch hin und wieder auf.
Merkwürdig ist auch, dass innerhalb einer EXE ein SendMessage mit WM_CLOSE an das Hilfe-Fenster problemlos funktioniert, während in der
DLL SendMessage nie zurückkehrt und deshalb nur SendNotifyMessage verwendet werden kann. Da ich so nicht auf das tatsächliche Schließen des Fensters warten kann, ist dies wohl auch die Ursache für die gelegentlichen Exceptions, wenn Microsofts Hilfe-Engine nicht schnell genug verschwindet.
Hat jemand eine Ahnung, warum der HTMLHelpViewer (sei es in der Original-CodeGear-Form oder sonstwie modifiziert) solche Probleme in DLLs macht? Mir gehen langsam die Ideen aus.
Gruß,
Steffen