こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ScreenSaverIsSecureの即時反映

windows7でスクリーンセーバーの設定
「再開時にログオン画面に戻る」
の有効/無効をExcelマクロ(VBA7.0)から変更しています。
レジストリ「ScreenSaverIsSecure」の設定変更内容を
即時反映するには、どのようにすればよいのでしょうか。

また、もしVBA以外で即時反映できる用でしたら、
そちらも併せてご教示いただきたく存じます。

●レジストリパス
 ・HKCU:\Control Panel\Desktop\ScreenSaverIsSecure

●現状
・マクロ自体は正常終了し、上記以外のレジストリ値は
即時反映されます。
・レジストリエディタでは変更(1→0,0→1)を確認できますが、
即時反映されません。
・マクロ内でSendMessageを追記してみましたが、
即時反映はされませんでした。
・レジストリが0でも即時反映されないため、
スクリーンセーバ開始→マウスを動かす→ログオン画面
に戻ってしまいます。

以上、よろしくお願いいたします。

投稿日時 - 2014-03-25 16:04:15

QNo.8528352

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

私の環境では(W7、W8、W8.1とも)次のようにすれば反映されます。
コマンドプロンプトで試してみて、動作すことを確認して、マクロに設定してみてください。
1. ScreenSaverIsSecure
の値を変更する。
2. RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True
を実行する。
3. ScreenSaveTimeOut
の時間が経過すれば、ScreenSaverIsSecure変更が反映された画面で再開される。

投稿日時 - 2014-03-25 20:16:18

補足

kteds様
ご回答いただきありがとうございます。
本件、ご教示いただきました方法をそのままbatにして実行してみましたが、
即時反映はされておりませんでした。。。
試行手順は以下の通りです。

 (1)ご教示いただいたコマンドを記載したbatファイルを作る。
 (2)タスクスケジューラで開始時刻を5分後に設定する。
 (3)しばらく放置し、スクリーンセーバが起動。
(ScreenSaveTimeOut=60、ScreenSaverIsSecure=1)
 (4)タスクスケジューラにより自動でbatが実行される。(この間もPCには触れていません)
 (5)タスクスケジューラを予約した時間から5分以上放置したのち、キーボードを触り、
   スクリーンセーバを解除する。
 (6)ユーザロック画面になってしまう。

本件、スクリーンセーバが起動していない状態でタスクを実行させる または
batを手動で実行すると、その後にスクリーンセーバが起動しても、なりました。
もし何かご存知でしたらご教示いただきたく存じます。

以上、よろしくお願いいたします。

投稿日時 - 2014-03-26 15:51:45

あなたにオススメの質問