+ -
当前位置:首页 → 问答吧 → 获取休眠消息,XP下能行,WINDOWS7下不行。。。。。求解

获取休眠消息,XP下能行,WINDOWS7下不行。。。。。求解

时间:2011-12-01

来源:互联网

在XP下获取系统休眠消息没有问题,但在WINDOWs7下,消息不能正常获取,难道xp和WINDOWS7消息机制不相同吗?
//--------------------------------------------
XP下代码
//-------------------------------------------
窗体的.h文件中
  BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(WM_POWERBROADCAST, TMessage,OnDeviceChange);//注册消息
  END_MESSAGE_MAP(TForm)

bool __fastcall RegisterDevNotify(const GUID *InterfaceClassGuid,
  HDEVNOTIFY *hDevNotify);

窗体的CPP文件中
  switch(Message.WParam)
  {
  case PBT_APMQUERYSUSPEND:
  ......//程序的逻辑处理
  break;
  }

在XP下都能正常获取,但windows7下就获取不了。有什么方法可以解决?

作者: panwen516   发布时间: 2011-12-01

给你抄过来

http://msdn.microsoft.com/en-us/library/aa373247%28VS.85%29.aspx

请仔细查看MSDN的说法,大概翻译过来的意思是:
Windows Server 2003, Windows XP, and Windows 2000可以返回BROADCAST_QUERY_DENY拒绝待机、休眠。
但是Vista和Win7只能接收。

WM_POWERBROADCAST消息不会在UAC控制下的程序中广播,要收到消息可以关闭UAC或者mainfest提权或者用SetThreadExecutionState改变线程状态


http://topic.csdn.net/u/20100402/11/808b9806-8584-4984-9201-7dfa3a72986d.html

作者: zzbinfo   发布时间: 2011-12-01

谢谢,我先看看

作者: panwen516   发布时间: 2011-12-01

系统变安全了,意思是程序员的权利变小了。

作者: cankoo   发布时间: 2011-12-01