|
たとえば、フックや、Winsock の通信処理などを APIを使ってゴリゴリコーディングしている場合、フックをアンインストールしたり、非同期処理を行うためのウインドウを破棄するなど、終了処理を正しく行う必要があります。 ですが、それらを使ってIDEでデバッグを行っていると、エラーが発生したり、IDE のメニューやボタンから実行を終了したりすると、終了処理が行われず、IDEが異常終了したり、ハングアップしたりします。 このような処理は、ActiveX.DLL にすると、中断したときも、終了処理を正しく行うことができます。 手順は以下のとおり (1) ActiveX.DLL を新規作成します。 (2) 「プロジェクト」→「全般」→「スタートアップの設定」で、Sub Main を選択します。 (3) Instancing プロパティを 「1-Private」にしたクラス(CMain.cls) を作成します。 (4) モジュールファイルを追加し、次のようにコーディングします。
Option Explicit
Private mobjMain As CMain
Sub Main()
Set mobjMain = New CMain
End Sub
このように作成した ActiveX.DLL を参照設定した VB のプロジェクトを IDE から実行し、終了ボタンで終了させた場合、CMain の Class_Terminate が走ります。 あとは、Class_Terminate の中に終了処理を置けばよいです。 サンプルプログラム |
||