最近、windows10…特にCreators Update以降やたらとTvRockでのスタンバイからの復帰→録画の流れが失敗していることがあります。
具体的には、録画時間になってもスタンバイから復帰していない。
電源は入るがフリーズしてる・画面が真っ暗という、スタンバイから復帰を試みてるが失敗していることではなく、そもそもスタンバイ復帰自体が行われずPCがスリープのまま、電源が入ってないままになるのです。
録画されているはずの時間に自分でスタンバイ復帰すると、タスクスケジューラーがマッハでスケジュールを再開し、USBチューナーのマウント完了前にRecTaskが立ち上がってしまい、チューナー無し・0.0db/0.0Mbpsの状態で再開してしまいます。
しかし、個人的に気がついていたことがあります。それは
スタンバイへの入り方によって復帰の成否が変わってる??
ということです。
今までは気のせいだと思っていましたが、ついに堪忍袋の緒が切れてしまい、ちゃんとネットで調べてみることに。
すると…
このような記事を発見しました( ゚∀゚)
かいつまむと
「rundll32.exe PowrProf.dll,SetSuspendState」というコマンドを使ってのスリープ移行は、windows10ではタスクスケジューラーでの復帰に失敗することがある、というものです。
実は、windowsを長時間立ち上げたままでUSBチューナーを使い続けると、徐々にUSBもしくはチューナーの安定性が失われていく(チューナー欠け等)問題に悩まされていた時期がありまして、こまめな再起動を心がけなければいけなかったのですが、当時SSDでも無かったために、再起動に時間がかかっていました。
なので、「再起動をかけ、起動後スタンバイに移行するVBスクリプト」をネットの情報をかき集めて書き、トイレに離席する直前、お風呂に入る直前、寝る直前等に実行してあとは放置、って感じで時間節約していました。
それを改めてみてみると…
If CreateObject("WScript.Shell").Popup( _
"省電力状態に移行します。よろしいですか?" & vbLf & _
"キャンセルしない場合、" & MinWaitForSuspend & "秒後に移行します", _
MinWaitForSuspend, "省電力状態への移行の確認", 33) <> 2 Then
Shell.Run "rundll32.exe powrprof.dll,SetSuspendState"
あっ、使ってる…(´・ω・`)
このスクリプトを使った次にコケてる、ってことには薄々感づいていたのですが…
先程のリンク先のブロクを読むと、ドンピシャで復帰失敗の原因として書かれていたので間違いなさそうです。
また、このブログの方が復帰に問題ないとされるRubyでのスタンバイのスクリプトを公開されているので、それの.exe版を自作VBスクリプトから呼び出して使うことにします(´・ω・`)
「うちも復帰に失敗してるけど、こんなコマンド使ってないよ!」って言う方でも、バグを誘発するこのコマンドを内部的にスタンバイ移行の手段として利用しているアプリを使ってたっていうオチの場合もある、ということになります。
ちゃんとOSのGUIからスタンバイ(スリープ)したのにスタンバイ復帰しない場合は、原因はこの記事にあるモノではなく別ってことですヨ☆ミ