-
-
[求助]关于ExitWindowsEx大法关360的疑问
-
发表于:
2009-10-13 22:40
7809
-
[求助]关于ExitWindowsEx大法关360的疑问
在<
玩玩360——ExitWindowsEx大法>(http://bbs.pediy.com/showthread.php?t=97539&highlight=360)这篇文章中提到了一种在R3下结束进程的方法。看了源码,有个不解之处,请高手解答:
MSDN上说处理wm_queryendsession消息是return 0阻止关机。
关于WM_QUERYENDSESSION,MSDN上有明确的讲解,摘录如下,
The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls the ExitWindows function. If any application returns zero, the session is not ended.
The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.
在 Windows NT 4.0 服务包 6 (SP6) 或 Windows NT 4.0 SP6a 基于系统上,任何应用程序调用 ExitWindowsEx 函数时系统将 WM_QUERYENDSESSION 消息发送给所有顶级窗口。 如果任何窗口的接收该消息返回 FALSE,关机进程停止,不管多少窗口返回 TRUE。
但是作者源码却是return true阻止关机(我试了return true是对的,而return faulse就直接关机了)。作者源码:
switch (message)
{
case WM_INITDIALOG:
SendMessage(hDlg,WM_SETICON,ICON_BIG,LPARAM(LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON)))); //设置图标
OpenProcessToken (GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
EnablePrivilege (hToken, SE_SHUTDOWN_NAME, TRUE);
break;
case WM_QUERYENDSESSION:
return true;
break;
case WM_CLOSE:
SendMessage(hDlg, WM_CLOSE, 0, 0);
DestroyWindow(hDlg);
break;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDC_OK:
ShowWindow(hDlg,SW_HIDE);
do
{
temp=ExitWindowsEx (EWX_SHUTDOWN ,0XFFFFFFFF);
} while (!temp);
break;
}
break;
}
return FALSE;
}
不知道问题出在哪,还请高手不啬赐教?(昨天一直顶原帖,无奈没人看到,只好发帖求助了)
(一直都是用手机上网,可能问题没受清楚。现在补充一下,希望高手解答!!!! ---20091113 10:08)
[课程]FART 脱壳王!加量不加价!FART作者讲授!