ちょうど、自分で使ってるのがありましたが、hsp2用だったので
ツールを使って3用にしました。
3用としてはイマイチですが……
#include "llmod3/llmod3.hsp"
#define TOKEN_ADJUST_PRIVILEGES 32
#define SE_SHUTDOWN_NAME "SeShutdownPrivilege"
#define SE_PRIVILEGE_ENABLED 2
dialog "休止状態にしますか?",2: if stat==7 {
end
}
ll_libload hadvapi,"advapi32.dll"
getptr phToken,hToken
dllproc "GetCurrentProcess",prm,0,D_KERNEL
dllret@=stat
prm=dllret,TOKEN_ADJUST_PRIVILEGES,phToken
dllproc "OpenProcessToken",prm,3,hadvapi
dllret@=stat
ssn=SE_SHUTDOWN_NAME
getptr pssn,ssn
getptr pluid,tpl.1
prm=0,pssn,pluid
dllproc "LookupPrivilegeValueA",prm,3,hadvapi
dllret@=stat
tpl.0=1
tpl.3=SE_PRIVILEGE_ENABLED
getptr ptpl,tpl
prm=hToken,0,ptpl,0,0,0
dllproc "AdjustTokenPrivileges",prm,6,hadvapi
dllret@=stat
prm=0,0 ;最初の0を1にするとスタンバイ、後の0を1にすると強制実行
dllproc "SetSystemPowerState",prm,2,D_KERNEL
dllret@=stat
end