我想用钩子程序来截获系统的关机消息,,请问如何实现

wanglukai 2007-01-24 09:41:08
前辈们 给点意见 最好有代码 传上来 !!
...全文
648 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ct_qy 2007-01-25
  • 打赏
  • 举报
回复
如果是Console程序的话,用SetConsoleCtrlHandler注册一个如下形式的回调函数:
BOOL WINAPI HandlerRoutine(DWORD dwCtrlType);
其中dwCtrlType如果为CTRL_SHUTDOWN_EVENT 就是要关机了。
ct_qy 2007-01-25
  • 打赏
  • 举报
回复
如果是服务的话,用RegisterServiceCtrlHandlerEx注册一个如下形式的回调函数:
DWORD WINAPI HandlerEx(
DWORD dwControl,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext);
类似窗口的回调函数。
其中dwControl如果为SERVICE_CONTROL_SHUTDOWN 就是要关机了。

linuxpgy 2007-01-25
  • 打赏
  • 举报
回复
have time帮你看下,现在no time,-_-!
wanglukai 2007-01-25
  • 打赏
  • 举报
回复
#include <windows.h>
#include <stdio.h>
int main()
{
BOOL bRet;
MSG msg;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
if(msg.message == WM_QUERYENDSESSION)
{
printf("yeah-----!!!!!!!!!!----!!!!\n");
return 0;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return 1;
}
楼上的你说这种可以实现么 不带窗口的
,exe有办法实现么
linuxpgy 2007-01-25
  • 打赏
  • 举报
回复
.exe 或者 服务? 创建个窗口就不是exe了?
服务我没接触过,你现在是在开发服务吗?请把你开发的服务代码贴出来,看看有没有其他方法
wanglukai 2007-01-25
  • 打赏
  • 举报
回复
可是我要在。exe或者是一个服务中捕获关机消息 这样有办法实现么?/
BOYGUARD110 2007-01-24
  • 打赏
  • 举报
回复
MARK
leon7909 2007-01-24
  • 打赏
  • 举报
回复
同上,有WM_QUERYENDSSION这么简单的东西不用干嘛要去用什么勾子。
crumpy 2007-01-24
  • 打赏
  • 举报
回复
不用钩子, 用消息WM_QUERYENDSSION不行吗?

出处: http://topic.csdn.net/t/20010806/15/225749.html
linuxpgy 2007-01-24
  • 打赏
  • 举报
回复
这里有个APIHOOK的例子,可以拦截系统关机消息 : http://pgy12345.googlepages.com/apihook
编译,运行,然后点击 开始菜单里的关机,会发现不起任何作用。


linuxpgy 2007-01-24
  • 打赏
  • 举报
回复
你没有创建窗口,好象不行吧。。。 建议创建一个窗口,用窗口过程来接受WM_QUERYENDSSION消息
wanglukai 2007-01-24
  • 打赏
  • 举报
回复
我用了可是不行
我想写一个 截获 系统关机 消息的例子 请求帮助!为什么下面的例子截获 不到 消息 !
#include <windows.h>

#include <stdio.h>
int main()
{
BOOL bRet;
MSG msg;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
if(msg.message == WM_QUERYENDSESSION)
{
printf("yeah-----!!!!!!!!!!----!!!!\n");
return 0;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return 1;
}

我想获得系统关机消息 在关机 前打印出 着句话 “yeah-----!!!!!!!!!!----!!!!\n”
不知道怎么调试!!请执叫

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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