程序成功阻止了系统关机,但是程序自己运行结束了,为什么?

o1001 2010-01-13 05:16:26
我用程序实现了截获系统关机消息 WM_QUERYENDSESSION,并返回了0, 但是我的程序怎么也结束了?
我不想让程序结束。问题出在哪儿呢?

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUERYENDSESSION:
return 0;
case WM_ENDSESSION:
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
...全文
280 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_wei 2010-01-14
  • 打赏
  • 举报
回复
那这样就不能调式了,关机前所有程序都关闭,你要截获所有消息
分析出来你这个程序的消息,系统在没有关这个程序时 就把系统关机的消息截获 并返回0
djjs280 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 o1001 的回复:]
只能在关机的时候才能运行到程序的这个逻辑里面,
但是关机时直接就已经把开发工具,编译器等都关闭了,怎么能够debug进去啊?
[/Quote]
虚拟机,OutputDebugString
o1001 2010-01-14
  • 打赏
  • 举报
回复
只能在关机的时候才能运行到程序的这个逻辑里面,
但是关机时直接就已经把开发工具,编译器等都关闭了,怎么能够debug进去啊?
dianhui 2010-01-13
  • 打赏
  • 举报
回复
同意楼上,最好把这个消息也拦截掉试试!
djjs280 2010-01-13
  • 打赏
  • 举报
回复
跟踪下系统是不是发了WM_DESTROY给你的程序
o1001 2010-01-13
  • 打赏
  • 举报
回复
怎么做才能使我的进程不被关闭呢?
aidy22 2010-01-13
  • 打赏
  • 举报
回复
可能被关掉了,因为关机之前会把系统所有的应用进程也关掉啊
第6章 操作系统与Windows相关程序 6.1 启动相关 实例208 进入WinXP前发出警告 实例209 实现关机、重启计算机 实例210 将程序设置成为开机自动执行的程序 6.2 磁盘相关 实例211 判断驱动器属性 实例212 获取磁盘空间信息 实例213 获取磁盘序列号 实例214 取消磁盘共享 实例215 格式化磁盘 6.3 桌面相关 实例216 隐藏、显示开始按钮 实例217 隐藏、显示桌面文件 实例218 隐藏、显示Windows任务栏 实例219 随机修改系统桌面背景 实例220 抓取桌面 6.4 系统相关 实例221 获得Windows和System的路径 实例222 控制光驱的弹开与关闭 实例223 启动控制面板 实例224 定时关闭计算机 实例225 实现OCX控件的注册和卸载 6.5 系统监控 实例226 检测U盘是否插入 实例227 检测文件和目录是否改变 实例228 检测系统启动模式 实例229 内存使用状态 实例230 监视剪贴板内容 实例231 利用钩子技术实现键盘监控 6.6 程序相关 实例232 用列表显示系统正在运行程序 实例233 为程序添加快捷方式 实例234 设置其他程序中编辑框内的文本 实例235 执行一个外部程序直到其结束 实例236 调用具有参数的可执行程序 实例237 编写控制面板小应用程序 实例238 编写Windows服务 实例239 阻止程序重复运行 6.7 线程同步 实例240 利用事件对象实现线程同步 实例241 利用互斥对象实现线程同步 实例242 利用临界区实现线程同步 实例243 用信号量实现线程同步 实例244 多线程实例 6.8 鼠标、键盘相关 实例245 动画鼠标 实例246 限制鼠标移动区域 实例247 鼠标穿透窗体 实例248 设置鼠标形状 实例249 控制键盘指示灯 6.9 动态链接库 实例250 访问DLL中的位图 实例251 从DLL中导出类对象

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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