ActiveXDLLから、呼び出し元EXEを終了するには?

解決


Joe  2006-08-22 02:06:58  No: 96365

VB6.0にてDLL(ActiveXDLL)の作成に初めて取り組んでおります。
目的は、使い回しの利く汎用的な、ログイン周りを扱うDLLを作成することです。
機能的には、ユーザ名・パスワード入力用ウィンドウの表示、
スプラッシュウィンドウの表示などを行いたいのです。

ここで、ユーザ名・パスワードを入力せずにキャンセルした場合、
呼び出し元のEXEも一緒に終了させたいのですが方法がわかりません。

--------------------------------------------
Private Sub cmdCancel_Click()
    LoginSucceeded = False
    End
End Sub
--------------------------------------------
とすると、
「コンパイルエラー:
この機能はDLLでサポートされていません。」と表示されます。

こういった場合、DLLから呼び出し元EXEを終了するには、どのように
すればよいのでしょうか?よろしくお願いします。

※  EXE名はGetModuleFileNameというAPIで、第一引数をNullにする事で
取得できました。ここからプロセスID等を取得してKillProcess等をすれば
出来ると思うのですが、ちょっと大げさなような気がして...質問しました。

Win2K(SP4) + VB6.0(SP6)


ガッ  2006-08-22 02:15:27  No: 96366

私が作るなら、「DLL側から、EXEに終了するように申し立てる」構造にしますね
あくまでEXEを終了するのは、主体であるEXE側ですので
EXEを改変できないとなれば、やはりその"大げさ"な方法しか残らないでしょう


Joe  2006-08-22 21:33:27  No: 96367

「ガッ」さんが仰られたような事も考えないではなかったのですが、
今回はOpenProcessやTerminateProcessといったAPIを使用することで
DLLから呼び出し元のEXEを強制終了させることができました。
有難うございました。

※  最後に参考にしたサイトを掲載しておきます。
「Tips箪笥」>「Visual Basic Tips」>
「82.VBから起動したプログラムを終了させる(API)」
http://www.geocities.co.jp/SiliconValley/4805/vbtips/vbtips100.htm


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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