タイトル : OSをログオフまたはシャットダウンをキャンセルした場合、APを終了しないようにするには? 投稿日 : 2003/11/06(Thu) 19:23 投稿者 : masat21
[OSのVer]:Windows 2000 [VBのVer]:VB.NET masat21です。 まずは例をご覧ください。 '例1:Module1.vb Public Sub main() 'パラメタの初期化処理 (中略) 'メイン画面を表示します。 Application.Run(frm1) End Sub '例2:Form1.vb '下記の例はhhttp://dobon.net/vb/dotnet/system/sessionending.htmlより引用 [VB.NET] 'ログオフ、シャットダウンの通知 'Imports Microsoft.Win32 'が宣言されているものとする。 Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load 'イベントをイベント ハンドラに関連付ける 'フォームコンストラクタなど適当な位置に記述してもよい AddHandler SystemEvents.SessionEnding, _ AddressOf SystemEvents_SessionEnding End Sub Private Sub Form1_Closed(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Closed 'イベントを開放する 'フォームDisposeメソッド内の基本クラスのDisposeメソッド呼び出しの前に '記述してもよい RemoveHandler SystemEvents.SessionEnding, _ AddressOf SystemEvents_SessionEnding End Sub 'ログオフ、シャットダウンしようとしているとき Private Sub SystemEvents_SessionEnding( _ ByVal sender As Object, _ ByVal e As SessionEndingEventArgs) Dim s As String If e.Reason = SessionEndReasons.Logoff Then s = "ログオフしようとしています。" ElseIf e.Reason = SessionEndReasons.SystemShutdown Then s = "シャットダウンしようとしています。" End If If MessageBox.Show(s + vbNewLine + "キャンセルしますか?", _ "質問", MessageBoxButtons.YesNo) = DialogResult.Yes Then 'キャンセルする e.Cancel = True End If End Sub 上記例において、ログオフまたはシャットダウンをキャンセルした場合e.Cancel = True にしたあと、フォームを閉じないようにDialogMe.DialogResult = DialogResult.None としましたが、キャンセルが無効になってAPとOSが終了します。 キャンセルを有効にしてAPとOSを終了させない方法についてご教示願います。 ちなみに、ログオフまたはシャットダウンする場合は、OSが終了する前にAPを終了させる メソッドApplication.Exit()を発行しています。 |