首页 > 解决方案 > 计算机状态(睡眠、休眠、锁定等)Windows 10

问题描述

我需要检查计算机的当前状态 。休眠、睡眠、onStand-by 锁定等

我只想问如何使用 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): true or false Lock: true or false sleep: true or false hibernate: true or false

标签: c#.net

解决方案


根据此链接,您可以使用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;
        }
    }

推荐阅读