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

panwen516 2011-12-01 09:55:55
在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下就获取不了。有什么方法可以解决?
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
panwen516 2011-12-02
  • 打赏
  • 举报
回复
自己顶一个
panwen516 2011-12-01
  • 打赏
  • 举报
回复
这种变小是牺牲我们这些纯情程序员的感情为基础的,可恶的“独裁”
cankoo 2011-12-01
  • 打赏
  • 举报
回复
系统变安全了,意思是程序员的权利变小了。
panwen516 2011-12-01
  • 打赏
  • 举报
回复
谢谢,我先看看
zzbinfo 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
iqyely 2011-12-01
  • 打赏
  • 举报
回复
来关注下

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧