c# - 如何在 C# 控制台应用程序中禁用用户输入?

标签 c# console-application

我正在构建一个在计时器上运行的控制台应用程序,它是一个调度程序 SMS 发送应用程序,方法包含在 main 方法中。我如何确保用户不能输入任何字符,以便应用程序继续运行直到机器停止。我想一起查看有关应用程序执行的信息。我也禁用了关闭按钮。源码如下:

public 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);
        Timer t = new Timer(TimerCallback, null, 0, 5000);
        Console.ReadLine();
    }

    private static void TimerCallback(Object o)
    {
        Console.WriteLine("SMS Banking Schedule: " + DateTime.Now);
        DLLSendSMS dllSendSMS = new DLLSendSMS();
        dllSendSMS.GetMessages(null);
        GC.Collect();
    }

}

最佳答案

我建议为此构建一个 Windows 服务,您可以确保它会在机器启动时启动(如果需要)并在后台运行。您可以将信息记录到日志文件、事件日志等,以确保一切正常。

Visual Studio 具有服务模板,可以非常轻松地快速构建服务。

关于c# - 如何在 C# 控制台应用程序中禁用用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072531/

相关文章:

c# - 如何在 Visual Studio 2015 中创建可执行文件

c++ - 如何将 Visual Studio 2010 WinForm 对象添加到 C++ 控制台应用程序项目

c# - 如何实现具有注入(inject)功能的通用结构层次结构

c# - 多个线程中的for循环

c# - 使用 RazorEngine 时如何输出原始 html(不是来自 MVC)

c# - 如何重定向控制台的输出?

c# - 在 Windows 10 中向 Text to Speech Engine 添加新声音

c# - 使用 ADO (c#) 执行 Oracle 存储过程

c# - 从网站自动下载 XLS 文件

在Linux控制台中创建openGL上下文(Raspbian)