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

解決


悩めるプログラマー  2002-02-26 23:37:44  No: 75332

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

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

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

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


Say  2002-02-27 01:44:07  No: 75333

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


悩めるプログラマー  2002-02-27 03:12:57  No: 75334

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


batchman  2002-03-06 20:05:25  No: 75335

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

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


batchman  2002-03-06 20:19:01  No: 75336

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

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


悩めるプログラマー  2002-03-07 21:24:21  No: 75337

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

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

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


batchman  2002-03-08 02:17:34  No: 75338

私の場合、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-09 00:04:49  No: 75339

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

batchmanさん感謝感謝です。


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

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






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