社区
Windows SDK/API
帖子详情
SetSystemPowerState函数,请问谁会用?
alec_ma
2004-01-16 02:59:39
我在一个BUTTON中写了
SetSystemPowerState(False,True);
按下后一点反应都没有。请问有谁知道是怎么一回事
...全文
416
5
打赏
收藏
SetSystemPowerState函数,请问谁会用?
我在一个BUTTON中写了 SetSystemPowerState(False,True); 按下后一点反应都没有。请问有谁知道是怎么一回事
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alec_ma
2004-01-16
打赏
举报
回复
thank you very very :d
winsock2000
2004-01-16
打赏
举报
回复
呵呵,刚刚帮你试过得了,系统2003!休眠状态!
参看大富翁http://www.delphibbs.com/delphibbs/dispq.asp?lid=903658
function 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
SetPrivilege( 'SeShutdownPrivilege', True ); //获取权限!
SetSystemPowerState(true,true)
end;
end.
hch_45
2004-01-16
打赏
举报
回复
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;
Privil
ege[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;
******************
function SleepSystem():BOOL;
var
hProcess,hAccessToken:THandle;
LUID_AND_ATTRIBUTES:TLUIDAndAttributes;
TOKEN_PRIVILEGES: TTokenPrivileges;
BufferIsNull:DWORD;
Const
SE_SHUTDOWN_NAME='SeShutdownPrivilege';
begin
hProcess:=GetCurrentProcess();
OpenProcessToken(hprocess,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,hAccessToken);
LookupPrivilegeValue(Nil,SE_SHUTDOWN_NAME,LUID_AND_ATTRIBUTES.Luid);
LUID_AND_ATTRIBUTES.Attributes:=SE_PRIVILEGE_ENABLED;
TOKEN_PRIVILEGES.PrivilegeCount:=1;
TOKEN_PRIVILEGES.Privileges[0]:=LUID_AND_ATTRIBUTES;
BufferIsNull:=0;
AdjustTokenPrivileges(hAccessToken,False,TOKEN_PRIVILEGES,sizeof(TOKEN_PRIVI
LEGES),Nil,BufferIsNull);
SetSystemPowerState(False,True);
ShutDownSystem:=True;
end;
hch_45
2004-01-16
打赏
举报
回复
在98可以,在2000,NT,xp下你要先取到SE_SHUTDOWN_NAME权限。
winsock2000
2004-01-16
打赏
举报
回复
98可以!2000要获取权限!
易语言置电脑休眠
易语言置电脑休眠源码,置电脑休眠,置悬挂状态_
C# 系统 关机 断电 休眠 注销 待机
用C#实现系统的关机、断电、休眠、注销、待机 VS2009
VC++实现系统待机、关闭、重启(含源码)
VC++实现系统待机、关闭、重启(含源码) VC++实现系统待机、关闭、重启(含源码)
VC++实现Windows 2000/XP下的休眠
实现Windows 2000/XP下的休眠
VB 代码 关机待机休眠
一短 vb开发语言, 能让计算机开机、关机、待机等操作
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章