|
.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」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



