c# 控制台程序禁用关闭按钮完美解决

在做项目的时候需要这样一个功能,让控制台程序不能随意关闭。找了半天资料,终于通过WINDOWS的API完美解决了。如下

 

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

namespace ConsoleApplication1
{
class Program
{
[DllImport(
" User32.dll " , EntryPoint = " FindWindow " )]
private static extern int FindWindow( string lpClassName, string lpWindowName);

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

[DllImport(
" user32.dll " , EntryPoint = " RemoveMenu " )]
extern static int RemoveMenu(IntPtr hMenu, int nPos, int flags);

static void Main( string [] args)
{
// 与控制台标题名一样的路径
string fullPath = System.Environment.CurrentDirectory + " \\ConsoleApplication1.exe " ;
// 根据控制台标题找控制台
int WINDOW_HANDLER = FindWindow( null , fullPath);
// 找关闭按钮
IntPtr CLOSE_MENU = GetSystemMenu((IntPtr)WINDOW_HANDLER, IntPtr.Zero);
int SC_CLOSE = 0xF060 ;
// 关闭按钮禁用
RemoveMenu(CLOSE_MENU, SC_CLOSE, 0x0 );

// 使用命令关闭
while ( true )
{
if (Console.ReadLine().ToLower() == " exit " )
{
return ;
}
}
}
}
}

 

 

 

你可能感兴趣的:(控制台)