- 締切済み
PCを指定時間に休止状態にしたり復帰させたりする方法
PCを指定時間に休止状態にしたり、復帰させたりしたいと思っています。 復帰はタスクスケジューラで、休止状態はrundll32.exeを使ってできることとが分かったのですが、rundll32で休止状態にすると、タスクスケジューラでの自動起動ができないようです。(どこかのサイトにも書かれていました) そこで、rundll32以外の方法で休止状態にする方法(コマンド、WindowsAPIなど)をご存知の方がいらっしゃいましたらご教授ください。 会社のPCで、フリーソフトを落としたり持ち込んだりはできないので、コマンドやAPIが存在しているのならば、それを実行するプログラムを作ればいいかと思っています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Donotrely
- ベストアンサー率41% (537/1280)
>今回お聞きしたいことは、rundll32以外の方法で休止状態にする方法ですが、 >rundll32を使用して休止状態にできなくて困っているというわけでは >ありません。 これは失礼しました。 >できないのは、このコマンドで休止状態にした後、タスクスケジューラに登録された >別のexeなどが起動する時間に休止状態から復帰させることです。 原理的にできません。 なぜならCPUクロックが停止しているからです。 起動されるタスクもプログラムなら、起動させるタスクスケジューラもプログラムなのです。 CPUが停止している以上プログラムによるタスク開始処理を実行することは不可能です。 入出力デバイスによるトリガーで、止まった場所から再開させることなら可能ですけど。
- Donotrely
- ベストアンサー率41% (537/1280)
>そこで、rundll32以外の方法で休止状態にする方法(コマンド、WindowsAPIなど)をご存知の方がいらっしゃいましたらご教授ください。 そこまで意欲がある方が >タスクスケジューラでの自動起動ができないようです。(どこかのサイトにも書かれていました) 他人の言った表面的なことを鵜呑みにするというのは... ダメな原因は何か?を理解する努力をしてから別の手段をさがすべきではないでしょうか。 例えば、XPがCドライブに普通にインストールされていれば C:\WINDOWS\system32\rundll32.exe powrprof.dll,SetSuspendState という内容のコマンドファイル(バッチファイル)を作ります。 仮にファイル名を kyuushi.cmd か kyuushi.bat にします。 これで、PCを一時休止を有効化して、 タスクスケジューラでkyuushi.cmdかkyuushi.batを設定すればどうかな。 正常なPCならできます。
お礼
回答ありがとうございます。 でもちょっと質問の仕方が悪かったので求めている回答と違いました。 今回お聞きしたいことは、rundll32以外の方法で休止状態にする方法ですが、 rundll32を使用して休止状態にできなくて困っているというわけでは ありません。 >C:\WINDOWS\system32\rundll32.exe powrprof.dll,SetSuspendState これを使用して休止状態にすることはできます。 できないのは、このコマンドで休止状態にした後、タスクスケジューラに登録された 別のexeなどが起動する時間に休止状態から復帰させることです。 スタートメニューから普通に休止状態にすると、指定の時間に 休止状態から復帰して、登録したアプリが起動するのですが、 上記コマンドで休止状態に入れると時間になっても復帰しません。 (もちろん電源ボタンを押せば復帰できます。) 私のIBMと後輩のFMVとDELLでも試しましたが全部同じ結果だったので、 もしかしたら仕様かバグかな~と思ってます。
お礼
度々ありがとうございます。 色々と試してみましたが、やっぱりコマンドで休止状態にする以上、無理そうですね。 「Windowsのシャットダウン」ウィンドウからユーザ操作によって休止状態に 入れると復帰できるのに、rundll32で休止状態に入れると復帰できないというのは、 ちょっと引っかかるところですが。。。 同じ休止状態でも内部的に何か違うんでしょうね。 仕方なく、「Windowsのシャットダウン」ウィンドウを表示させて、 休止状態にしてEnterを押すというキーストロークを仮想的に行わせる アプリを作って、休止状態にすることで、どうにかやることができました。 ただ、キーストロークが決まっていて、デスクトップを表示させている状態じゃないとうまく行かないので、 デキはいまいちなのですが。。。