HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1123
クルセイダーコマンドプロンプトにコマンドを・・・7解決


クルセイダー

リンク

2006/11/23(Thu) 14:08:50|NO.3710

はじめまして。
自動でWINDOWSをシャットダウンするソフトを作ろうとしていて、
コマンドプロンプトにコマンドを送る方法で作りたいのですがどうすればいいかわかりません。
どなたか教えてください。



この記事に返信する


As

リンク

2006/11/23(Thu) 14:39:06|NO.3711

WindowsAPIにはあまり詳しくないのであるかどうかわかりませんが、

HSP側で シャットダウンさせるためのコマンドを入れたバッチファイル(*.bat)を作成し、
exec命令で作成したバッチファイルを実行すればシャットダウンできるのではないかと思います。



kanzaki

リンク

2006/11/23(Thu) 20:21:53|NO.3715

質問に質問で返すようで恐縮ですが

1:HSPから、コマンドプロンプトの機能を使用してシャットダウンしたい

2:コマンドプロンプトから、HSPの機能を使用してシャットダウンしたい

のどちらでしょうか?

1 の場合ですが、
コマンドプロンプト単体にはシャットダウンの機能は
実装されていなかった様に記憶しております。
余談になりますが、コマンドプロンプト 即ち DOS全盛であった頃は、
シャットダウンと言う概念自体が必要ではありませんでした。
設定等は、特定のファイルに予め記述し、書き換えない限り変更されません。
強いて言えば、ctrl + c 等としてHDDのヘッドを退避させる(正確には違う気もするが)位ですかね



クルセイダー

リンク

2006/11/23(Thu) 21:25:36|NO.3716

suhtdown -s と入力したらシャットダウン出来るのですが・・・



Irisawa

リンク

2006/11/23(Thu) 22:04:31|NO.3717

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



Irisawa

リンク

2006/11/23(Thu) 22:23:06|NO.3718

追記
単純に外部コマンド(com,exeなどの実行ファイル)を実行する場合はexecで実行できます。



kanzaki

リンク

2006/11/23(Thu) 23:17:52|NO.3719

kanzaki

2006/11/23(Thu) 23:08:49|NO.3719

勉強不足でした、XPから外部コマンドとして追加されていたのですね

exec "shutdown.exe -s"

又は、
exec "command.com /c shutdown /s"

exec "cmd.exe /c shutdown /s"


で如何でしょう?
と、既に答えは出ておりましたね…


後者の方法ですと、内部コマンドも実行可能ですから
コマンドプロンプトからの呼び出しという意味では
こちらのほうがご希望に近いのかも知れません。



クルセイダー

リンク

2006/11/24(Fri) 19:17:08|NO.3729

ありがとうございました。
みなさんいろんな意見を出して下さってよく分かりました。



ONION software Copyright 1997-2023(c) All rights reserved.