zoukankan      html  css  js  c++  java
  • 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;
    }
    }
    }
    }
    }
  • 相关阅读:
    Android 动画-alpha(渐变透明度动画效果)
    Memento(备忘录)
    Mediator(中介者)
    Iterator(迭代器)
    Command(命令)
    Chain of Responsibility(责任链)
    Template Method(模板方法)
    Interpreter(解释器)
    Proxy(代理)
    Flyweight(享元)
  • 原文地址:https://www.cnblogs.com/xinjian/p/1783358.html
Copyright © 2011-2022 走看看