⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_59715.htm

📁 vc
💻 HTM
字号:
<p>
序号:59715 发表者:赵灵儿 发表日期:2003-11-10 08:41:26
<br>主题:如何用VC编程实现关机?
<br>内容:在Windows9X/Me中,可以在VC中调用API中的&nbsp;&nbsp;&nbsp;&nbsp;::ExitWindowsEx(EWX_SHUTDOWN,0);<BR>来实际关机,但在以NT为核心的Windows2000/xp中就不行了,那么此时又如何关机呢?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:CDMA2000 回复日期:2003-11-10 09:17:07
<br>内容:单击OK按钮重启动的代码<BR>void CRebootDlg::OnOK() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;UpdateData();<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add extra validation here<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(m_nReboot==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ExitWindowsEx(EWX_REBOOT, 0)) goto Exit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)) goto Exit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//因为上面的重起不成功,所以需要调整本进程的特权<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hToken;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOKEN_PRIVILEGES tkp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&amp;hToken)) goto Exit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取重起的特权SE_SHUTDOWN_NAME<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;tkp.Privileges[0].Luid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tkp.PrivilegeCount = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!ExitWindowsEx(EWX_REBOOT, 0))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>Exit:<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDialog::OnOK();<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sank 回复日期:2003-11-11 11:35:55
<br>内容:void CZzDlg::OnOK() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add extra validation here<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVERSIONINFO osv;<BR>&nbsp;&nbsp;&nbsp;&nbsp;osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetVersionEx(&amp;osv);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(osv.dwPlatformId == VER_PLATFORM_WIN32_NT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hProcess,hToken;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOKEN_PRIVILEGES Privileges;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LUID luid;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得当前的进程号<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hProcess=GetCurrentProcess();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得进程的存取令牌. 第二个参数为TOKEN_ADJUST_PRIVILEGERS时,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得可调整的存取令.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&amp;hToken);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Privileges.PrivilegeCount=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//查找关机权限的ID号<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&amp;luid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Privileges.Privileges[0].Luid=luid;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调整存取权限, 如果不成功, 本函数返回 -1<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (!AdjustTokenPrivileges(hToken,FALSE,&amp;Privileges,NULL,NULL,NULL))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(&#34;fail to shut down the computer&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;ExitWindowsEx(EWX_SHUTDOWN,0); <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CDialog::OnOK();<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jackyxio 回复日期:2003-11-12 09:16:50
<br>内容:精华中有完整的例子,比较老,你可以翻翻。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -