Windows終了時に、稼動中のVBアプリを終了させるには?

解決


ざりんぐ  2002-12-20 21:04:16  No: 105728  IP: [192.*.*.*]

度々、お世話になります。
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では無理なのでしょうか?

編集 削除
たかみちえ  URL  2002-12-20 21:20:07  No: 105729  IP: [192.*.*.*]

なんだかイベントの意味を間違えているように思います。
Form_QueryUnloadはサブルーチンではなくイベントです。
このイベントは、何でもいいのでフォームが閉じようとしているときに発生します。
何でもには、Windowsの終了や再起動も含まれます。

  これはイベントなので、特に設定せずとも、
フォームが閉じるときに、自動的に発生します。

編集 削除
ざりんぐ  2002-12-21 17:08:57  No: 105730  IP: [192.*.*.*]

迅速なアドバイスをいただき、ありがとうございます。
その後、いろいろやってみましたがうまくいきません。。。

既にForm_load書いた一個のプログラム(frm)があり(でもフォームは
隠すので、その中のボタンクリックでWindowsと共に終了させる事は
しないのです)、ここで「ユーザーがWindowsを終了させた」を感知さ
せるには(上記コーディングは)どうしたらよいのでしょう?

↑  表現がマズくて思惑が伝わりにくかったらごめんなさい。

編集 削除
ざりんぐ  2002-12-21 17:57:17  No: 105731  IP: [192.*.*.*]

以下、自己追記です。

この既にあるForm_Loadの中身は、他アプリ画面でデータ入力等のイベント発
生を監視させる目的でループしています。なので、その中にWindows終了監視
ロジックを追加して組み込みたいというのが狙いです。

...これで意図が伝わる事を祈りつつ。

編集 削除
たかみちえ  URL  2002-12-21 18:03:13  No: 105732  IP: [192.*.*.*]

Form_loadもイベントです。中でループはしないでください。
  メッセージループみたいな監視用ループが必要なのは、C言語だけですから。

編集 削除
ざりんぐ  2002-12-24 11:05:48  No: 105733  IP: [192.*.*.*]

素直に、Windows終了専用ウィンドウを新設してユーザーにそこの
ボタンクリックしてもらってシャットダウンさせる事にしました。
(今回、C言語を廃止するのが目的でした。)
ありがとうございました。

編集 削除