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)
私が作るなら、「DLL側から、EXEに終了するように申し立てる」構造にしますね
あくまでEXEを終了するのは、主体であるEXE側ですので
EXEを改変できないとなれば、やはりその"大げさ"な方法しか残らないでしょう
「ガッ」さんが仰られたような事も考えないではなかったのですが、
今回はOpenProcessやTerminateProcessといったAPIを使用することで
DLLから呼び出し元のEXEを強制終了させることができました。
有難うございました。
※ 最後に参考にしたサイトを掲載しておきます。
「Tips箪笥」>「Visual Basic Tips」>
「82.VBから起動したプログラムを終了させる(API)」
http://www.geocities.co.jp/SiliconValley/4805/vbtips/vbtips100.htm
ツイート | ![]() |