delphi如何实现自动关机?
问题点数:20、回复次数:10Top
1 楼ihihonline(潇潇->戒烟)回复于 2002-01-07 20:49:04 得分 0
不会你是用winNT/2000
如果是那样的话,太麻烦了Top
2 楼jiju(UNCC)回复于 2002-01-07 21:01:24 得分 0
sendmessage()//参数查一下帮助Top
3 楼Fuxiao(X老师)回复于 2002-01-07 23:15:22 得分 0
你试试这样: 把这两个语句写到Buttonclick或者Ontimer事件中去
exitwindowsex(EWX_LOGOFF+EWX_FORCE,32);
exitwindowsex(EWX_SHUTDOWN,32);Top
4 楼benykim(神仙?妖怪?)回复于 2002-01-07 23:58:20 得分 0
告诉我你的mail,我妹一个给你!Top
5 楼flytian(飞鸟)回复于 2002-01-08 20:22:12 得分 0
多谢!zfly99@etang.comTop
6 楼pdsinfo(新手)回复于 2002-01-08 20:39:16 得分 0
procedure CloseWindows;
var
currToken:THandle;
prevState,newState:TTokenPrivileges;
prevStateLen:DWORD;
uid:TLargeInteger;
begin
// Set the privledges so we CAN reboot...
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, currToken);
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',uid);
newState.PrivilegeCount:=1;
newState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
newState.Privileges[0].Luid := uid;
AdjustTokenPrivileges(currToken, False, newState, sizeof(TTokenPrivileges),prevState, prevStateLen);
// Go ahead and reboot...
ExitWindowsEX(EWX_POWEROFF, 0);
end;Top
7 楼yjl169(漂泊)回复于 2002-01-27 01:17:16 得分 20
很容易实现
点button2就可以了,自己用吧
procedure TForm1.Button2Click(Sender: TObject);
var
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(EWX_POWEROFF,0);//这句就是关机
//ExitWindowsEx(EWX_REBOOT,0);
end;Top
8 楼flytian(飞鸟)回复于 2002-03-02 19:26:34 得分 0
谢谢各位!Top
9 楼robyman(Rob man)回复于 2002-03-02 19:36:37 得分 0
同意楼上的Top
10 楼Bellamy(酷公爵)回复于 2002-03-02 19:44:11 得分 0
呵呵!Top




