数学建模社区-数学中国

标题: 用C++Builder写的一个关闭机器的函数! [打印本页]

作者: ilikenba    时间: 2004-9-24 21:07
标题: 用C++Builder写的一个关闭机器的函数!
<>bool  closecomputer(int kind)% T' m7 K# A( _& e* p
{
5 m0 l" X* j+ S  F- N" i: `    HANDLE hToken;. n; w% H- p9 X7 Y: W
    TOKEN_PRIVILEGES tkp; </P>
$ a; ~0 _& V- z& u; M) \<>    // Get a token for this process.
- i8 c7 y" G- a, o# a  s) r" \    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;hToken)): f8 n/ Z/ ?, e6 a
    {$ ?$ ]: f3 e* G* N0 G0 }( e; o
      return false;5 I" d3 d% c( {3 v1 x; G
    }</P>  b& ?: q; R* H- |8 o/ I
<>    // Get the LUID for the shutdown privilege.
- }+ A3 \+ K: f& |2 f0 ?    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;tkp.Privileges[0].Luid); </P>( z! D4 R! W2 f6 Z
<>    tkp.PrivilegeCount = 1;  // one privilege to set7 E5 }4 a, ]% d8 e! }7 N
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;</P>
3 H, L& ^9 o& g+ X$ u<>    // Get the shutdown privilege for this process.
1 N+ m1 [3 j) m    AdjustTokenPrivileges(hToken, FALSE, &amp;tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);</P>. L4 [% \$ i! Y9 ]0 a+ s+ U1 ~/ k
<>    if (GetLastError() != ERROR_SUCCESS)6 K% i; `$ _7 @; Q: P( I0 C$ z
    {/ [( j# L  c  N6 d3 L
      return false;5 v: v8 k, P% D* m
    }
- e& H, O8 m' U; [0 r( n    switch(kind)
) }8 D& G, s9 P% q& N    {case 1: ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0); break; //重启1 [$ a8 c! L" |' v5 I
     case 2: ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN|EWX_POWEROFF,0); break; //关机6 S- Y1 b2 u9 ^, ?) w, ^0 c7 ]6 Y" ]
     case 3: ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0); break; //注销
' ^, v0 Z: ]- s: {+ \     case 4: SetSystemPowerState(false, true); break; //休眠2 j) u$ g/ g4 M% U7 C( @* M/ z. Z
     case 5: SetSystemPowerState(true, true); break; //待机4 z0 ]  C6 H# P( k
     default:  break;
/ B) ^  }3 s2 X: P0 b& j    }
9 ^7 Y, z1 N) r* H    return true;</P>) U' H' _5 w& P
<>}</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5