如何写一个自动关机程序? 如何写一个自动关机程序?如果不知道,就给我一个关机的函数也可。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure ExitWin2000(ewx: integer); // Win2000关机 (1为重起,2是关机)procedure ExitWin9895(EWX: integer); // Win9598关机 (EWX_FORCE, EWX_LOGOFF, EWX_POWEROFF, EWX_REBOOT, EWX_SHUTDOWN)procedure ExitWinSys(EWX: integer); // 退出操作系统(Win2000 or Win9895)包括重起(EWX_REBOOT)、关机(EWX_SHUTDOWN)procedure ExitWin2000(ewx: integer);var hToken: THANDLE; hProc: THANDLE; mLUID: TLargeInteger; mPriv, mNewPriv: TOKEN_PRIVILEGES; mBufferLength: DWord;begin if not (ewx in [1, 2]) then exit; hProc := GetCurrentProcess(); OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken); LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID); mPriv.PrivilegeCount := 1; mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; mPriv.Privileges[0].Luid := mLUID; AdjustTokenPrivileges(hToken, False, mPriv, (4 + (12 * mPriv.PrivilegeCount)), mNewPriv, mBufferLength); case ewx of 1: ExitWindowsEx(EWX_FORCE + EWX_REBOOT, 0); 2: ExitWindowsEx(EWX_FORCE + EWX_POWEROFF, 0); end;end;procedure ExitWin9895(EWX: integer);begin ExitWindowsEx(EWX, 0);end;procedure ExitWinSys(EWX: integer);begin case GetOSVersion of SYS2K: case EWX of EWX_REBOOT: ExitWin2000(1); EWX_SHUTDOWN: ExitWin2000(2); end; SYS98, SYS95: ExitWin9895(EWX); end;end; VB声明】 Private Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long【说明】 退出windows,并用特定的选项重新启动 【返回值】 Long,非零表示成功,零表示失败。会设置GetLastError 【备注】 这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作【参数表】 uFlags --------- Long,指定下述一个或多个标志(用OR运算符合并到一起) EWX_FORCE 强迫中止没有响应的进程 EWX_LOGOFF 中止进程,然后注销 EWX_SHUTDOWN 关掉系统电源(如果可能的话,ATX电源就可以) EWX_REBOOT 重新引导系统 EWX_SHUTDOWN 关闭系统 dwReserved ----- Long,保留,设为零 注意:exitwindowsex()在WINNT系列下要提昇權限. ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0)-------------------------------------------------------试过了,应该没错! 棋牌客户端的多开器 求原理 delphi 怎么知道DBGRID中某(些)行是否选中? 跟自負串有關的一個問題(在線急等) 怎样把手画出来的线变光滑 在线急等:如何将求和的SQL结果传出到DELPHI变量中?!!!!! 图形界面 谁用过window ce下的数据库????? 谁有oicq的源代码??? delphi中打印一个十六进制数? 关于消息,请进..... 菜鸟问题,如何建立文件夹???请各位帮忙!!!!! 大家谁知道delphi利用用什么控件可以模拟甘特图(类似project中相关功能)?
// Win2000关机 (1为重起,2是关机)
procedure ExitWin9895(EWX: integer);
// Win9598关机 (EWX_FORCE, EWX_LOGOFF, EWX_POWEROFF, EWX_REBOOT, EWX_SHUTDOWN)
procedure ExitWinSys(EWX: integer);
// 退出操作系统(Win2000 or Win9895)包括重起(EWX_REBOOT)、关机(EWX_SHUTDOWN)
procedure ExitWin2000(ewx: integer);
var
hToken: THANDLE;
hProc: THANDLE;
mLUID: TLargeInteger;
mPriv, mNewPriv: TOKEN_PRIVILEGES;
mBufferLength: DWord;
begin
if not (ewx in [1, 2]) then
exit;
hProc := GetCurrentProcess();
OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
mPriv.PrivilegeCount := 1;
mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
mPriv.Privileges[0].Luid := mLUID;
AdjustTokenPrivileges(hToken, False, mPriv, (4 + (12 * mPriv.PrivilegeCount)), mNewPriv, mBufferLength);
case ewx of
1: ExitWindowsEx(EWX_FORCE + EWX_REBOOT, 0);
2: ExitWindowsEx(EWX_FORCE + EWX_POWEROFF, 0);
end;
end;procedure ExitWin9895(EWX: integer);
begin
ExitWindowsEx(EWX, 0);
end;procedure ExitWinSys(EWX: integer);
begin
case GetOSVersion of
SYS2K:
case EWX of
EWX_REBOOT: ExitWin2000(1);
EWX_SHUTDOWN: ExitWin2000(2);
end;
SYS98, SYS95: ExitWin9895(EWX);
end;
end;
Private Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long【说明】
退出windows,并用特定的选项重新启动 【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError 【备注】
这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作【参数表】
uFlags --------- Long,指定下述一个或多个标志(用OR运算符合并到一起)
EWX_FORCE
强迫中止没有响应的进程
EWX_LOGOFF
中止进程,然后注销
EWX_SHUTDOWN
关掉系统电源(如果可能的话,ATX电源就可以)
EWX_REBOOT
重新引导系统
EWX_SHUTDOWN
关闭系统 dwReserved ----- Long,保留,设为零
-------------------------------------------------------
试过了,应该没错!