用Delphi程序怎么控制电脑重新启动、注销、关机呢??还有一个问题就是怎么设置让程序运行的时候看不到呢?最好连进程都看不到。
还有怎么用热键调出呢?就是QQ隐藏的进修用热键调出。
还有怎么用热键调出呢?就是QQ隐藏的进修用热键调出。
解决方案 »
- 仍然是自动点击按钮问题
- 求算法,本人无能为力,请高手帮助
- TDBGrid控件中如何出现类似TDBComboBOX的下拉框?
- ScanLine怎么用啊?
- delphi的ProgressBar能否在查询的存储过程中运用?
- 怎样能使窗体没有边框,就像墙纸一样显示在桌面的某处?——高分
- 有关gridEH的超难问题??????高手请进!!
- 我想专门为delphi软件公司承揽报表的开发工作,不知有没有公司愿意?
- 实现true->正常 false->不正常?
- 关于Execl的问题,请各位高手赐教。
- 关于RICHEDIT控件输入全角文字出错的问题?????????????????????????????
- 为何不能进行除法?
2.ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0); 强行重启
3.exitwindowsex(EWX_SHUTDOWN, 0); 正常关机
4.exitwindowsex(EWX_REBOOT, 0); 正常重启
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,rr);
exitwindowsex(ewx_shutdown or ewx_poweroff,0);
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
function WinExitInNT(iFlags: Integer): Boolean;
function SetPrivilege(sPrivilegeName: string; bEnabled: Boolean): Boolean;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function Tform1.WinExitInNT(iFlags: Integer ): Boolean;
begin
Result := True;
if (SetPrivilege('SeShutdownPrivilege',True)) then
begin
if(not ExitWindowsEx(iFlags,0))then
begin
Result := False;
end;
SetPrivilege('SeShutdownPrivilege',False)
end else begin
Result := False;
end;
end; function Tform1.SetPrivilege(sPrivilegeName: string; bEnabled: Boolean): Boolean;
var
TPPrev,TP: TTokenPrivileges;
Token: THandle;
dwRetLen: DWord;
begin
Result := False;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
TP.PrivilegeCount := 1;
if( LookupPrivilegeValue(Nil,PChar(sPrivilegeName),TP.Privileges[ 0 ].LUID )) then
begin
if(bEnabled) then
begin
TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;
end else begin
TP.Privileges[ 0 ].Attributes := 0;
end;
dwRetLen := 0;
Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ),TPPrev,dwRetLen);
end;
CloseHandle(Token );
end;procedure TForm1.Button1Click(Sender: TObject);
begin
WinExitInNT(EWX_POWEROFF);
end;end.
const
EWX_FORCE=4;
//关闭所有程序并以其他用户身份登录
EWX_LOGOFF=0;
//重新启动计算机并切换到MS-DOS方式
EWX_REBOOT=2;
//重新启动计算机
EWX_SHUTDOWN=1;
//关闭计算机
运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句:
ExitWindowsEx(How,0);
就可以搞定了,在windwos2000下:
上面的程序里的EWX_POWEROFF你可以根据你的需要自己改,也可以把它们设成常量,方便调用,对了,还有就是,
EWX_LOGOFF:关闭所有调用函数ExitWindowsEx的进程的安全环境里运行的进程,然后注销用户;EWX_POWEROFF:关闭系统并关闭电源,系统必须具有电源关闭特性;EWX_REBOOT:关闭系统并重新启动系统。EWX_SHUTDOWN:关闭系统使之能安全关闭电源。所有文件缓冲区都被清洗到磁盘,所有运行进程都停止;EWX_FORCE强迫中止没有响应的进程;ExitWindowsEx(4,0);--这个也可以在2000下注销好了,就这样了。