終了時にHandleを開放するとエラーになってしまう

解決


Taku  2002-08-29 16:41:25  No: 1389

数日前の過去ログの「ヘルプを複数呼び出せないようにするには?」で
kazuさん紹介のページを参考にHTMLHELPを呼び出したのですが

[FormCreate]
po := nil;
DLLWnd := LoadLibrary('hhctrl.ocx');
if DLLWnd > 0 then
  begin
    po := GetProcAddress(DLLWnd, 'HtmlHelpA');
  if po <> nil then
    @HtmlHelp := po;
  end; 

[FormDestroy]
if po <> nil then 
  FreeLibrary(DLLWnd);

FormDestroyでヘルプを閉じる前に処理されてしまうせいか、アクセス違反でエラーを起こしてしまいます(発生率は不定)
(Win2000 Delphi6です)

何か対処法は無いのでしょうか?
FreeLibrary(DLLWnd);を実行しなければエラーは起こりませんが、
やはり開放しないと良くないのでしょか?


にしの  2002-08-30 02:35:02  No: 1390

if po <> nil then
    HtmlHelp(Handle,0,HH_CLOSE_ALL,0);

で閉じてからでもエラーになりますか?
こちらでは閉じなくてもエラーになりません。
# Delphi5, Windows2000, IE6


Taku  2002-08-30 07:55:55  No: 1391

にしのさま
いつもお世話になります

投稿前にHH_CLOSE_ALLは試しましたがダメでしたが
(2番目の値はファイル名で使用)
今回、nilに変更したらOKでした
なぜかは解りませんが、解決です
有難うございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加