有一个小问题,想请教一下: API:ExitWindowsEx自己看DELPHI的帮助吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要实现对Windows的开关的控制,可以利用Windows API函数 ExitWindowsEx()来实现这一功能。此函数的声明如下: Bool ExitWindowsEx( UINT uFlags, DWORD dwReserved );此函数的第一个参数控制计算机的开关,说明如下: EWX_FORCE=4;//关闭所有程序并以其他用户身份登录 EWX_LOGOFF=0;//重新启动计算机并切换到MS_DOD方式 EWX_REBOOT=2;//这就是你想要的。 EWX_SHUTDOWN=1;//关闭计算机例子: procedure ...(Sender: TObject);//按钮的点击事件 begin ExitWindowsEx(EWX_REBOOT,0); end;这样就可以重新启动计算机了。 呵呵,看我的相关文档:var VerInfo:TOSVersionInfo; hToken:THANDLE; tkp:TOKEN_PRIVILEGES; Nothing:Cardinal;beginVerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);GetVersionEx(VerInfo);if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then Begin OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken); LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid); tkp.PrivilegeCount:= 1; tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing); End; ExitWindowsEx(//你的惯技玄想); end; 我做了个表单,上面加一个按纽,在点击事件中用: ExitWindowsEx(EWX_REBOOT,0);怎么不行呢? 查看一下帮助,这样试试ExitWindowsEx(EWX_REBOOT and EWX_FORCE,0); 帮助上这么说:Windows NT: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.这是什么意思?该怎么做? 你再使用AdjustTokenPrivileges不就行了 QuickReport最后一行内容为两行的宽度,如何将这两行换到下一页显示? 寻找DELPHI高手QQ群。 如何将目录下的的文件完全路径加文件名生成一个文件? delphi打包遇到的问题 在新机器上装DELPHI开发的程序建BDE的时候MSSQL没有怎么办!!谢谢 库存如何做结转? 谁能帮我写一个拷贝目录(包括其子目录)的函数??? 在delphi中如何调用带返回参数存储过程? 救急救急!关于Memcpy函数的Delphi实现。 如何编写在DElphi中的chm帮助文件!!!! 关于消息 delphi中如何在Edit(或DBEdit)中填入一个角度?
Bool ExitWindowsEx(
UINT uFlags,
DWORD dwReserved
);
此函数的第一个参数控制计算机的开关,说明如下:
EWX_FORCE=4;//关闭所有程序并以其他用户身份登录
EWX_LOGOFF=0;//重新启动计算机并切换到MS_DOD方式
EWX_REBOOT=2;//这就是你想要的。
EWX_SHUTDOWN=1;//关闭计算机
例子:
procedure ...(Sender: TObject);//按钮的点击事件
begin
ExitWindowsEx(EWX_REBOOT,0);
end;
这样就可以重新启动计算机了。
VerInfo:TOSVersionInfo;
hToken:THANDLE;
tkp:TOKEN_PRIVILEGES;
Nothing:Cardinal;
begin
VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
GetVersionEx(VerInfo);
if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
Begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
End;
ExitWindowsEx(//你的惯技玄想);
end;
怎么不行呢?
Windows NT:
To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.
这是什么意思?该怎么做?