none
ウィンドウ非表示の状態でもWindowsセッション終了をキャンセルしたい RRS feed

  • 質問

  • 「ある処理をしている場合はWindowsセッション終了をキャンセルする」 という事を実現する為に,
    SessionEnding イベントを使っているのですが,Window を非表示に (Hide()) していると
    引数 e の Cancel プロパティに true を設定してもシャットダウンされちゃいます.

    (Window 表示状態ではきちんと働いているようです)

    今作成しているアプリには Window を非表示にした待機モードというのがあるので,
    Window を表示していない状態でも Windows セッション終了をキャンセルする手段が
    必要なのですが何かいい方法がございますでしょうか?

    2010年4月15日 11:11

回答

  • Window を以下の状態にしてタスクバーを有効にしていると大丈夫なようです。
    この場合はcheckBox1で非表示にしています。
    なんかソースをUPする機能がおかしいみたいで見づらくてすみません。

     public partial class Window1 : Window {  public Window1()  {   InitializeComponent();  }  private void checkBox1_Checked(object sender, RoutedEventArgs e)  {   if (checkBox1.IsChecked == true)   {    this.WindowStyle = WindowStyle.None;    this.WindowState = WindowState.Minimized;    this.Height = 0;    this.Width = 0;   }  }  private void Window_StateChanged(object sender, EventArgs e)  {   if (this.WindowState != WindowState.Minimized)   {    if (checkBox1.IsChecked == true)    {     this.WindowStyle = WindowStyle.None;     this.WindowState = WindowState.Minimized;    }   }  } }

     


    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
    • 回答としてマーク 菊地俊介 2010年4月23日 4:57
    2010年4月16日 8:26

すべての返信

  • Window を以下の状態にしてタスクバーを有効にしていると大丈夫なようです。
    この場合はcheckBox1で非表示にしています。
    なんかソースをUPする機能がおかしいみたいで見づらくてすみません。

     public partial class Window1 : Window {  public Window1()  {   InitializeComponent();  }  private void checkBox1_Checked(object sender, RoutedEventArgs e)  {   if (checkBox1.IsChecked == true)   {    this.WindowStyle = WindowStyle.None;    this.WindowState = WindowState.Minimized;    this.Height = 0;    this.Width = 0;   }  }  private void Window_StateChanged(object sender, EventArgs e)  {   if (this.WindowState != WindowState.Minimized)   {    if (checkBox1.IsChecked == true)    {     this.WindowStyle = WindowStyle.None;     this.WindowState = WindowState.Minimized;    }   }  } }

     


    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
    • 回答としてマーク 菊地俊介 2010年4月23日 4:57
    2010年4月16日 8:26
  • ご回答有難うございます.

    ご提案の方法で Window 非表示でもセッション終了をキャンセルできました.
    ただ,欲を言えば Window 非表示の場合はタスクバーではなくタスクトレイにアイコンを表示するだけに
    留めておきたい,というのがあります.

    2010年4月16日 11:35