.NET TIPS コンソール・アプリケーションで[閉じる]ボタンを無効にするには?[C#、VB]デジタルアドバンテージ 遠藤 孝信2009/07/02 |
|
|
「TIPS:コンソール・アプリケーションの強制終了時に処理を行うには?」では、[Ctrl]+[C]キーが押されてアプリケーションが強制終了されるときにもアプリケーションの後処理を実行可能にするため、CancelKeyPressイベントを利用する方法について紹介している。
しかし、コマンド・プロンプトでコンソール・アプリケーションが実行されている場合、[Ctrl]+[C]キーが押される以外にも、ウィンドウ右上隅にある[×]ボタン([閉じる]ボタン)によりアプリケーションが強制終了される可能性がある。このような状況を回避する1つの手段としては、あらかじめ[×]ボタンを無効化しておくという方法がある。
Win32 APIによる[×]ボタンの無効化
Windowsフォーム・アプリケーションにおける[×]ボタンの無効化方法としては、「TIPS:タイトル・バーの[閉じる]ボタンのみを無効にするには?」にて、Win32 APIであるGetSystemMenu関数とRemoveMenu関数を利用した方法を紹介しているが、基本的には同じ手順がコンソール・アプリケーションにも有効だ。
ただし、GetSystemMenu関数の第1引数に指定しなければならないウィンドウ・ハンドルの取得方法がWindowsフォーム・アプリケーションとコンソール・アプリケーションでは異なる(GetSystemMenu関数の詳細については、元のTIPSを参照してほしい)。
コンソール・アプリケーションが実行されているコマンド・プロンプトのウィンドウ・ハンドルは、Processクラス(System.Diagnostics名前空間)のGetCurrentProcessメソッドによりアプリケーションのProcessオブジェクトを取得し、そのMainWindowHandleプロパティから取得できる。以下は、この手順により[×]ボタンを無効にするコンソール・アプリケーションの記述例だ。
| ||
[×]ボタンを無効にするコンソール・アプリケーション(上:C#、下:VB) |
以下は、このサンプル・プログラムを実行したときの画面である。
サンプル・プログラムの実行画面 |
ウィンドウ右上隅の[×]ボタンが無効化されているのを確認できる。
カテゴリ:コンソール・アプリケーション 処理対象:画面 カテゴリ:クラス・ライブラリ 処理対象:Win32 API 使用ライブラリ:DllImport属性(System.Runtime.InteropServices名前空間) 使用ライブラリ:Processクラス(System.Diagnostics名前空間) 関連TIPS:コンソール・アプリケーションの強制終了時に処理を行うには? 関連TIPS:タイトル・バーの[閉じる]ボタンのみを無効にするには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|