社区
Windows SDK/API
帖子详情
SetSystemPowerState函数,请问谁会用?
alec_ma
2004-01-16 02:59:39
我在一个BUTTON中写了
SetSystemPowerState(False,True);
按下后一点反应都没有。请问有谁知道是怎么一回事
...全文
383
5
打赏
收藏
SetSystemPowerState函数,请问谁会用?
我在一个BUTTON中写了 SetSystemPowerState(False,True); 按下后一点反应都没有。请问有谁知道是怎么一回事
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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要获取权限!
有关
Set
System
Power
State
函数
关于
Set
System
Power
State
(FALSE,TRUE);
函数
的调用有以下几个注意点1.
函数
的功能是让windows系统进入休眠状态2.执行该
函数
前必须满足系统设置了休眠开启状态 两种方式开启 (1)桌面右键/属性/桌面保护程序 选项卡/...
解决6410 WINCE6 应用层调用
Set
System
Power
State
api关机无效的问题
6410平台下的wince6系统,在应用层中使用
Set
System
Power
State
api
函数
关机发现无效。 应用层调用如下:
Set
System
Power
State
(NULL,
POWER
_
STATE
_OFF,
POWER
_FORCE); 注:该调用需要引用pm.h头文件,该头文件在...
wince6.0电源管理之应用程序调用
Set
System
Power
State
的执行过程
wince6.0电源管理之应用程序调用
Set
System
Power
State
的执行过程 欢迎转贴,但请保留源blog链接,谢谢。http://blog.csdn.net/bbw2008/archive/2010/03/18/5393463.aspx 如有错误,欢迎各位看客,不吝赐教,小弟先...
Windows常用系统
函数
windows常用系统
函数
win7休眠、待机api
win7休眠、待机api通过...xp、win7下用
Set
System
Power
State
函数
,vista及之后的版本使用
Set
Suspend
State
函数
。xp、win7:
Set
System
Power
State
BOOL WINAPI
Set
System
Power
State
( _In_ BOOL fSuspend, _In_ BOOL fForce
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章