度々、お世話になります。
Form_Loadのサブルーチンの中で、Form_QueryUnloadを繰り返してWind
ows終了(=vbAppWindows)を感知させたいのですが、Callの仕方はどう書
いたらよいのでしょうか? 下記うまくいきません。
-------------------------------------------------------------
Sub Form_Load()
L000:
・・・(略)・・・
cancel = 0
unloadmode = 2
Call Form_QueryUnload(cancel,unloadmode)
ret = unloadmode
'Windows終了の場合、アプリ強制終了して「反応なし」MsgBox防ぐ
If ret = vbAppWindows Then
Unload Me: Exit Sub: End 'アプリ終了
End If
・・・(略)・・・
GoTo L000 '--- Windows終了監視のためループ
End Sub
-------------------------------------------------------------
どなたか訂正指摘お願い致します。あるいはCallでは無理なのでしょうか?
なんだかイベントの意味を間違えているように思います。
Form_QueryUnloadはサブルーチンではなくイベントです。
このイベントは、何でもいいのでフォームが閉じようとしているときに発生します。
何でもには、Windowsの終了や再起動も含まれます。
これはイベントなので、特に設定せずとも、
フォームが閉じるときに、自動的に発生します。
迅速なアドバイスをいただき、ありがとうございます。
その後、いろいろやってみましたがうまくいきません。。。
既にForm_load書いた一個のプログラム(frm)があり(でもフォームは
隠すので、その中のボタンクリックでWindowsと共に終了させる事は
しないのです)、ここで「ユーザーがWindowsを終了させた」を感知さ
せるには(上記コーディングは)どうしたらよいのでしょう?
↑ 表現がマズくて思惑が伝わりにくかったらごめんなさい。
以下、自己追記です。
この既にあるForm_Loadの中身は、他アプリ画面でデータ入力等のイベント発
生を監視させる目的でループしています。なので、その中にWindows終了監視
ロジックを追加して組み込みたいというのが狙いです。
...これで意図が伝わる事を祈りつつ。
Form_loadもイベントです。中でループはしないでください。
メッセージループみたいな監視用ループが必要なのは、C言語だけですから。
素直に、Windows終了専用ウィンドウを新設してユーザーにそこの
ボタンクリックしてもらってシャットダウンさせる事にしました。
(今回、C言語を廃止するのが目的でした。)
ありがとうございました。
ツイート | ![]() |