WINDOWS关机的指令是哪条,用ExitWindows(EWX_POWEROFF|EWX_FORCE,0);只能使它注销,无法关机.
用SOFTICE跟踪以后发现WINDOWS自己用的也是这条指令可以关机,不知为什么.而现在当我关机的时候,
机子却莫名其妙地重新启动了?
解决方案 »
- 关于用 CxImage来实现色彩空间的转换
- 关于聊天服务器 多线程设计 100分
- 求助,问个combobox的问题
- 怎样恢复VC6的默认窗口布局?窗口被我搞乱,恢复不过来了!
- 问一个UNICODE的问题
- 请问在vc中用什么函数可以计算某一指定路径下某一文件的大小,单位为BYTE,100求此小问题的解,马上给分!谢谢!
- 哪位大哥有电子版的《windows编程》(北京大学出版社出版的)!!
- "定义成"英语怎么说?
- 奇怪的问题spInputHidden=spDisp;赋值经常失败为什么
- 小弟我刚学windows编程,看见有的源程序中,winmain函数前面写的是WINAPI,有时候写的是APIENTRY或者其他,这些是代表什么意思?请指教!谢谢!
- 创建无模式对话框的问题!
- 菜鸟问题:如何改变CSTatic的文字颜色?
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
MessageBox("OpenProcessToken failed!");
} LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); //获得本地机唯一的标识
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0); //调整获得的权限
if (GetLastError() != ERROR_SUCCESS)
{
MessageBox("AdjustTokenPrivileges enable failed!");
} fResult =InitiateSystemShutdown(
NULL, // 要关的计算机用户名
"由于系统不稳定,WINDOWS将在上面的时间内关机,请做好保存工作!", // 显示的消息
10, // 关机所需的时间
TRUE, // ask user to close apps
TRUE); //设为TRUE为重起,设为FALSE为关机
可以将
fResult =InitiateSystemShutdown(
NULL, // 要关的计算机用户名
"由于系统不稳定,WINDOWS将在上面的时间内关机,请做好保存工作!", // 显示的消息
10, // 关机所需的时间
TRUE, // ask user to close apps
TRUE); //设为TRUE为重起,设为FALSE为关机替换为:
if (!ExitWindowsEx(EWX_POWEROFF | EWX_SHUTDOWN | EWX_FORCE, 0))
{
MessageBox("Error ExitWindowsEx");
return FALSE;
}
//EWX_FORCE,EWX_FORCEIFHUNG
BOOL ShutDownWindows(UINT t)
{
OSVERSIONINFO osv; //定义一个操作系统信息的结构体
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv); //查询当前操作系统
if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/NT
{
//下面为向操作系统获取权限操作
HANDLE hProcess,hToken;
TOKEN_PRIVILEGES Privileges;
LUID luid;
hProcess=GetCurrentProcess();
//下面为打开当前进程对话
OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
Privileges.PrivilegeCount=1;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
Privileges.Privileges[0].Luid=luid;
Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
ExitWindowsEx(t,0);
}
else
{
ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。
PostQuitMessage(0);
}
return true;
}