我需要检查计算机的当前状态 。休眠,睡眠,待机锁定等
我只想问一下如何使用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):正确或错误 锁:对或错 睡眠:对或错 休眠:正确或错误
答案 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;
}
}