C# 如何在windows服务中获取按键/按下事件?

C# 如何在windows服务中获取按键/按下事件?,c#,asp.net,service,C#,Asp.net,Service,我想开发一个windows服务,它将检测按下的键,或者在按下键时启动。可能吗 我创建了一个在一段时间后运行的服务,并更新了一些数据库表 下面是我为不时更新数据库所做的代码 System.Timers.Timer timer1 = new System.Timers.Timer(); private void InitializeComponent() { ((System.ComponentModel.ISupportInitialize)(timer1)).BeginInit();

我想开发一个windows服务,它将检测按下的键,或者在按下键时启动。可能吗

我创建了一个在一段时间后运行的服务,并更新了一些数据库表

下面是我为不时更新数据库所做的代码

System.Timers.Timer timer1 = new System.Timers.Timer();
private void InitializeComponent()
{
    ((System.ComponentModel.ISupportInitialize)(timer1)).BeginInit();
    timer1.Enabled = true;         
    ((System.ComponentModel.ISupportInitialize)(timer1)).EndInit();
}

protected override void OnStart(string[] args)
{
    try
    {      
        WriteLog("test Services Started at : " + System.DateTime.Now);
        // Time Elapsed event 
        timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime);
        int intOnElapsedTime = Convert.ToInt32(
            System.Configuration.ConfigurationManager
            .AppSettings["intOnElapsedTime"]
            .ToString());
        timer1.Interval = 1000 * 10 * intOnElapsedTime;
        timer1.Enabled = true;
    }
    catch (Exception ex)
    {
        WriteErrorLog(ex.Message, ex.StackTrace, "OnStart");
    }
}

private void OnElapsedTime(object sender, ElapsedEventArgs e)
{
    try{ /* update database table */}
    catch (Exception exp){ ...}
}

Windows服务不适用于UI交互。与普通windows(winforms)相比,它们与内核的交互方式不同。i、 e.
MessageBox.Show(“某物”)
在Windows服务中不会产生任何内容

你需要调查一下

在C#中设计一个键盘挂钩。你会在谷歌上找到很多。将其放在Windows服务启动中。并部署您的服务

一些好的C#键盘挂钩:

因此,这些将帮助您捕获按下的键。然后你可以很容易地检查,什么键被按下,并执行你的行动。你甚至不需要定时器控制

此外,在windows服务中按下某个键时执行某些任务是一个非常糟糕的主意,因为您可能会一次又一次地不小心地按下,从而一次又一次地运行您的逻辑

您应该做的是,在windows服务中部署代码。并通过Windows任务调度程序调用它

就是你如何安排一项任务