WinをシャットダウンするAPIはuser32.dllがエクスポートしているExitWindowsExです。
以下のような使い方をします。
#uselib "kernel32.dll"
#cfunc GetCurrentProcess "GetCurrentProcess"
#uselib "advapi32.dll"
#func OpenProcessToken "OpenProcessToken" int, int, var
#func LookupPrivilegeValue "LookupPrivilegeValueA" int, sptr, var
#func AdjustTokenPrivileges "AdjustTokenPrivileges" int, int, var, int, int, int
#uselib "user32.dll"
#func ExitWindowsEx "ExitWindowsEx" int, int
#const EWX_LOGOFF 0
#const EWX_SHUTDOWN 0x00000001
#const EWX_REBOOT 0x00000002
#const EWX_FORCE 0x00000004
#const EWX_POWEROFF 0x00000008
; 権限の設定
hProcess = GetCurrentProcess()
OpenProcessToken hProcess, 0x0028, hToken
LookupPrivilegeValue 0, "SeShutdownPrivilege", Luid
TokenNew = 1, Luid, 0, 2
AdjustTokenPrivileges hToken, 0, TokenNew, 0, 0, 0
; シャットダウンします
ExitWindowsEx EWX_SHUTDOWN, 0
end
> コマンドプロンプトにコマンドを送る方法で作りたいのですがどうすればいいか
> わかりません。
コマンドプロンプトにコマンドを送信するには恐らく、標準入力に対して入力を行えば
いいはずです。
CreatePipeやGetStdHandleなどを調べてみてください。
http://lldev.jp/hsp/script/2clapp_and_pipe_src.html
http://www.silkroad.ne.jp/Sakura/web/contents/docarc01.htm