Visual Studio 2010 - C# - コンソールの「閉じる」を無効化


 クラウディア


1. 概要
2. 記述

1. 概要

 あれ?これは、「C#」の方に書くべきなのかな・・・。  まぁ、事情があって、そういうことになっちゃったのだよ。  コンソールアプリケーションを作成するのであるが、「閉じる」ボタン、右上の×印であるが。  これで、閉じられると困るので、無効化しちゃいたいのだ。  ちょっと探せば出てきたので、需要はあるのであろうか・・・。  本ページは、下記のサイトを参考にさせていただきました。
「C#からDLL関数の呼び出し」(リンク切れになりました)

2. 記述

 単に

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace myConsole
{
	class Program
	{
		private const int MF_BYCOMMAND = 0x00000000;
		public const int SC_CLOSE = 0xF060;

		[DllImport("user32.dll")]
		public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);

		[DllImport("user32.dll")]
		private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

		[DllImport("kernel32.dll", ExactSpelling = true)]
		private static extern IntPtr GetConsoleWindow();

		static void Main(string[] args)
		{
			DeleteMenu(GetSystemMenu(GetConsoleWindow(), false),SC_CLOSE, MF_BYCOMMAND);

			本来の処理...
		}
	}
}
 先頭の4行目までは、アバウトであるが、5行目は必須である。  処理で、まぁずっと待つような処理を書いているとして・・・。  実行すると

 ×が、非活性化しているのわかりますでしょうか。
 押せなくなっています。


audiobook.jp
AbemaTV 無料体験
アフィリエイトのアクセストレード
TikTok Shop 【リピート用プログラム】
ネットオークションの相場、統計、価格比較といえばオークファン
【usus ウズウズ】
earthcar(アースカー)
5G CONNECT
ベルリッツ
損保との違い
健康サポート特集
薬屋の独り言
ハイスピードプラン
JETBOY
サウンドハウス
それがだいじWi-Fi
U-NEXT
EMEET 1
葬送のフリーレン Prime Video
Amazonギフトカード
EaseUS