@@@@@@@@@@@@@@@@在DELPHI中用什么可以关闭计算机############### @@@@@@@@@@@@@@@@在DELPHI中用什么可以关闭计算机############### 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去查一下MS的SDK中API的资料,会有更为详细的介绍!ExitWindows或者ExitWindowsEx 我操作系统是2000我怎么用ExitWindowsEx(EWX_SHUTDOWN, 0);关不掉机子? win2000需要先取得系统的控制权才能关机的 使用Windows API函数ExitWindowsEx可以关闭Windows。函数如下:BOOL ExitWindowsEx(UINT uFlags, // 关闭操作DWORD dwReserved // 保留) ;其中参数uFlags的取值及其含义:• EWX_FORCE 在紧急情况下强制关机。• EWX_LOGOFF 以其他用户身份登录。• EWX_POWEROFF 关闭系统并关闭电源。• EWX_REBOOT 重新启动。• EWX_HUTDOWN 安全地关机。 何为控制权 超级用户 ADMINISTRATOR? 我用ExitWindowsEx(EWX_POWEROFF,0) 光不掉WIN2000我写的有错吗? 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; interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } procedure AdjustToken; public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.AdjustToken();var hdlProcessHandle : Cardinal; hdlTokenHandle : Cardinal; tmpLuid : Int64; tkpPrivilegeCount : Int64; tkp : TOKEN_PRIVILEGES; tkpNewButIgnored : TOKEN_PRIVILEGES; lBufferNeeded : Cardinal; Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;begin hdlProcessHandle := GetCurrentProcess; OpenProcessToken(hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle); // Get the LUID for shutdown privilege. LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid); Privilege[0].Luid := tmpLuid; Privilege[0].Attributes := SE_PRIVILEGE_ENABLED; tkp.PrivilegeCount := 1; // One privilege to set tkp.Privileges[0] := Privilege[0]; // Enable the shutdown privilege in the access token of this // process. AdjustTokenPrivileges(hdlTokenHandle, False, tkp, Sizeof(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded); end;procedure TForm1.Button1Click(Sender: TObject);begin AdjustToken; ExitWindowsEx((EWX_SHUTDOWN), $FFFF);end;end.以上程序可以关机,已经运行过,请给分吧 谢谢各位大哥 to:lzf1010(深宇) ExitWinSys(EWX: integer);不好用,找不到 GetOSVersion;to:millsyys() 关是能关 但是出现 ‘现在你可以安全关闭计算机了’分你两平分 不会打我吧 总之谢谢了!!!! TO:LZF1010 我试过你的,你的也可以。 如果是我们俩每人50分,我没意见,因为我试过他的,是可以关机,你如果不想出现那行字,可以将ExitWindowsEx((EWX_SHUTDOWN), $FFFF);中的EWX_SHUTDOWN改为EWX_FORCE + EWX_POWEROFF就可以了。 招聘开发DELPHI(北京) mscomm怎样能接收到完整的数据 DBGridEh中能不能编辑某一个字段 关于Twebbrowser关闭的问题 怎么样获取目前的日期 请问如何判断记录? 请问BDE中Session是怎么用的。我有几个DataBase控件。怎么用Session控件呢。 在使用QuickRep的Qrmemo打印时如何自动换行 我极度极度的对Borland感到失望 软件原理??????????????????????????????????????????????????????????????????? 新手问题 一个关于SQL的问题,请大家帮个忙!谢谢了!
ExitWindows或者ExitWindowsEx
我怎么用ExitWindowsEx(EWX_SHUTDOWN, 0);关不掉机子?
BOOL ExitWindowsEx(
UINT uFlags, // 关闭操作
DWORD dwReserved // 保留
) ;
其中参数uFlags的取值及其含义:
• EWX_FORCE 在紧急情况下强制关机。
• EWX_LOGOFF 以其他用户身份登录。
• EWX_POWEROFF 关闭系统并关闭电源。
• EWX_REBOOT 重新启动。
• EWX_HUTDOWN 安全地关机。
// 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;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
procedure AdjustToken;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.AdjustToken();
var
hdlProcessHandle : Cardinal;
hdlTokenHandle : Cardinal;
tmpLuid : Int64;
tkpPrivilegeCount : Int64;
tkp : TOKEN_PRIVILEGES;
tkpNewButIgnored : TOKEN_PRIVILEGES;
lBufferNeeded : Cardinal;
Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
hdlTokenHandle); // Get the LUID for shutdown privilege.
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this
// process.
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
Sizeof(tkpNewButIgnored),
tkpNewButIgnored,
lBufferNeeded); end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AdjustToken;
ExitWindowsEx((EWX_SHUTDOWN), $FFFF);
end;end.
以上程序可以关机,已经运行过,请给分吧
GetOSVersion;to:millsyys() 关是能关 但是出现 ‘现在你可以安全关闭计算机了’分你两平分 不会打我吧 总之谢谢了!!!!
我试过你的,你的也可以。