「Windowsの終了」ダイアログボックスの引数を取得するには?

解決


悩めるプログラマー  2002-02-26 14:37:44  No: 75332  IP: [192.*.*.*]

こんにちは。悩めるプログラマーです。
久しぶりに質問させて頂きます。

フォームにコマンドボタンを貼り付けて、そのボタンのClickイベントで
「Windowsの終了」ダイアログボックスを表示させ、「OK」ボタンを選択
したらそのままフォームをアンロードさせてWindowsも終了させる。
「キャンセル」ボタンを選択したらフォームに戻って処理を続行する。
…というような事をやりたいんです。

WindowsをシャットダウンさせるAPI(ExitWindows)なんかだとダイアログ
ボックスが出てこないしなぁと思いうまいこと引数でも取れないかと思ってる
ところです。
「ダイアログボックスを出す理由は?」と聞かれると、いきなりシャットダウン
では味気ないし…、というワガママ?な理由なんですけどね。(^-^)

長々と書き込みましたが、どなたかご存知の方、御教授願います。

編集 削除
Say  2002-02-26 16:44:07  No: 75333  IP: [192.*.*.*]

単純にQueryUnloadで自前のダイアログ開いて、(MsgBoxでも可)
OKだったらシャットダウンして、キャンセルだったら
Cancelすればいいのでは?

編集 削除
悩めるプログラマー  2002-02-26 18:12:57  No: 75334  IP: [192.*.*.*]

最初は自前で作ったんですが…。
デザインがダサダサだったので。(-_-;)
まぁ、終了するかどうかの判断なんでデザインに
こだわる必要もないんですけどね。
「できるのかなぁ〜?」という興味本位的なところもあったので。

編集 削除
batchman  2002-03-06 11:05:25  No: 75335  IP: [192.*.*.*]

Dim shObj As Object
        
Set shObj = CreateObject("Shell.Application")
shObj.ShutdownWindows
Set shObj = Nothing

こんなことをすれば、シェルが出してるWindowsのシャットダウンダイアログが出せたりします。

編集 削除
batchman  2002-03-06 11:19:01  No: 75336  IP: [192.*.*.*]

ああ!!解答になってなかったです。Sorry....

私の場合は、QueryUnloadイベントでOSからの終了じゃなければ、
CancelをTrueして上で書いた処理をするようにやってました。

編集 削除
悩めるプログラマー  2002-03-07 12:24:21  No: 75337  IP: [192.*.*.*]

OSからの終了じゃなければ??

具体的にどういうコードを書くんですかね?
よろしければ教えて頂けます?

わがままですみません。m(。-_-。)m

編集 削除
batchman  2002-03-07 17:17:34  No: 75338  IP: [192.*.*.*]

私の場合、OKボタンのクリックイベントでフォームをアンロードしてQueryUnloadイベントで以下のようにしています。

上記の shObj.ShutdownWindows は戻り値はないので、シャットダウンかログオフ
か再起動かはたまたキャンセルされたかは分かりません。ので、
QueryUnloadイベントでは、vbAppWindows 以外は全て shObj.ShutdownWindows 
を実行してアプリケーションは終了を中断します。
実際にshObj.ShutdownWindowsによってシャットダウンなりが実行されると、
再度 QueryUnload イベントで UnloadMode にvbAppWindowsがセットされてくるので、そのときはCancelしないで QueryUnload イベントを終了します。

タスクマネージャからの終了時は、シャットダウン処理をしないようにしていま
す。

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Dim shObj As Object
        
If UnloadMode <> vbAppWindows And UnloadMode <> vbAppTaskManager Then
    Set shObj = CreateObject("Shell.Application")
    shObj.ShutdownWindows
    Set shObj = Nothing
    Cancel = True
End If

End Sub

編集 削除
悩めるプログラマー  2002-03-08 15:04:49  No: 75339  IP: [192.*.*.*]

(* ^-^)ノできた〜!

batchmanさん感謝感謝です。

編集 削除