电脑状态(睡眠,休眠,锁定等)Windows 10

时间:2019-02-18 07:26:16

标签: c# .net

我需要检查计算机的当前状态 。休眠,睡眠,待机锁定等

我只想问一下如何使用C#获取计算机的当前状态? 通过检测LockApp进程,我已经知道计算机何时被锁定,但是如果它处于睡眠模式或休眠状态,我将无法获取。

我想尝试一个将使用任务计划程序运行的项目,并检查计算机的当前状态,并将其显示在控制台上。

请注意,我要在项目运行时检测计算机的状态。 谢谢。 抱歉我的英语不好。 :)

//Will return true if the Computer is Locked
public bool Lock()
{
    Boolean locked = false;
    Process[] LockApp = Process.GetProcesses();
    foreach (Process theprocess in LockApp)
    {
        if (theprocess.ProcessName == "LockApp")
        {
            locked = true;
            Console.WriteLine("LockApp: " + locked.ToString());
        }
    }
    return locked;
}
//Will return true if still on Startuptime (+5min)
public bool onStartupTime()
{
    bool oST = false;
    DateTime ST = DateTime.Now.AddMilliseconds(- 
    Environment.TickCount);
    DateTime Less = DateTime.Now.AddMinutes(-5);
    DateTime Now = DateTime.Now;

    Console.WriteLine(ST.ToString("yyyy-MM-dd HH:mm:ss"));
    Console.WriteLine(Less.ToString("yyyy-MM-dd HH:mm:ss"));
    Console.WriteLine(Now.ToString("yyyy-MM-dd HH:mm:ss"));

    if (ST >= Less)
    {
        oST = true;
    }

    return oST;
}

OnStartup(-5mins):正确或错误 锁:对或错 睡眠:对或错 休眠:正确或错误

1 个答案:

答案 0 :(得分:3)

根据this link,您可以使用SystemEvents.PowerModeChanged来完成。使用示例也发布在此处:

    SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(OnPowerModeChanged);


    private static void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        switch (e.Mode)
        {
            case PowerModes.Resume:
                MessageBox.Show("PowerMode: OS is resuming from suspended state");
                break;

            case PowerModes.Suspend:
                MessageBox.Show("PowerMode: OS is about to be suspended");
                break;
        }
    }