none
使用C# 获得系统当前状态 RRS feed

  • 问题

  • RT。

    想获得系统的状态 主要就是 正常、休眠、待机 的状态如何获得。

    在网上查了 找到可以设置的代码

    Application.SetSuspendState(PowerState.Suspend, false, false);

    但是没有发现获得当前状态的代码。

    2010年8月17日 2:35

答案

  • 从MSDN上来说,似乎的确提到一句“Occurs when the user suspends or resumes the system.”,看来似乎可以行的。不妨你在这个事件里边写道一个txt或者一个什么文件里边,通过那个arg的e.Mode进行状态判断。

    2010年8月18日 3:22
    版主
  • sleep和Suspend 也是无法处理网络请求的啊~  如果设置了监听唤醒也会立即唤醒过来的
    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月17日 3:07
    版主
  • 又查找了一下 似乎 SystemEvents.PowerModeChanged、SystemInformation.PowerStatus 这2个方法可以解决这个问题,大家讨论一下啊。 
    2010年8月17日 9:39

全部回复

  •   只要代码能运行  就是正常状态。只要在非正常模式下 就不会运行监测的代码 


    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月17日 2:52
    版主
  • 是这样的 这个程序可能是 做成客户端 安装在PC 上也可能是 Server-Client 模式通过Server端运行的程序

    来侦测指定PC的状态。没有办法能够区分开PC的状态么?

    我的想法是有没有 什么办法 能够运行代码 例如 (App.CurrentStatus == PowerState.Suspend) 来判断

    当前PC 是否处于Sleep 状态。

    2010年8月17日 2:58
  • sleep和Suspend 也是无法处理网络请求的啊~  如果设置了监听唤醒也会立即唤醒过来的
    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月17日 3:07
    版主
  • 那么也就是说 无法通过编程来获得 PC的状态了?

    判断的原则就是代码能够运行就证明 该PC就处于正常状态 否则就是挂起或者Sleep?

    但是有个问题不太清楚 开发完的Windows Service部署在PC 上 每天都自动运行,那么比如说过了1个小时以后该Sleep了,可是Service还在运行阿。每次想看数据的时候 也是晃动一下Mouse就可以唤醒PC了。此时的PC 不是处在Sleep状态么?可是 Windows Service还在运行阿。

    • 已编辑 scoket.joe 2010年8月17日 4:09 update
    2010年8月17日 3:22
  • 又查找了一下 似乎 SystemEvents.PowerModeChanged、SystemInformation.PowerStatus 这2个方法可以解决这个问题,大家讨论一下啊。 
    2010年8月17日 9:39
  • 从MSDN上来说,似乎的确提到一句“Occurs when the user suspends or resumes the system.”,看来似乎可以行的。不妨你在这个事件里边写道一个txt或者一个什么文件里边,通过那个arg的e.Mode进行状态判断。

    2010年8月18日 3:22
    版主