こんにちは!今回はスリープに入らないようにする方法の一つとして、通常使われていないキーを自動で入力してくれるVBSを組んでみましたのでご紹介してみようと思います。
スリープに入らないようにと一言に言っても意外にうまくできないことがあります。
もちろんWindowsの設定だけで行うことがベストではあるのですが、いちいちGUIを開いてーとやっているとめんどくさいなぁと思う瞬間もあると思います。(特に複数台やらなければいけないケースなど
意外に繋げている周辺機器や電源設定などの影響も受けたりしますし、スリープ設定だけしてロックしてしまったりというおっちょこちょいな事もよくあります。
というわけで、さっそくやってみたいと思います。
やりたいこと
・スクリプトを起動しているだけで、スリープもロックもしないようにしたい
結局のところ、これに尽きます。
作業中に電話を取ったりしてると、終わった後にスリープになっているという事も避けられますからね。スクリプトを起動させたら抑制するようにしてみたいと思います。
スクリプト例
下記コードをテキストなどに張り付けて保存し、拡張子を.vbsに変更すると実行可能になります。
Set objShell = WScript.CreateObject("WScript.Shell")
Do
'①入力間隔
WScript.Sleep 60000*3
'②F15キーの送信
objShell.SendKeys "{F15}"
Loop
解説
VBS的にはかなり基礎的な機能のみを使用していますが、各セクションについて簡単に解説していきます。
①入力間隔を設定する
今回は何も「起こらないキー入力を押している」とOSに認識させることでスリープへ入らないようにしています。ということは、スリープに入るまでの時間よりも短い間隔でキー入力があれば、仕組みとしてスリープにならなくなります。
WScript.Sleep 60000*3
Sleepは一時的にスクリプトを停止するメソッドで、ミリ秒単位で設定します。
今回は一般的なスリープまでの時間は5分くらいかな~としてそれより短い3分にしています。
60,000ミリ秒は60秒、60秒は1分なので、分かりやすいよう掛け算の形にしています。
②何も起こらないキーを送信する
何も起こらないキーの代表として、「F15キー」を使用しました。
F15キーとは何ぞや?と言われると説明が難しいのですが、簡単に言えば昔のキーボードにかつてあったキーと思ってください。今のWindows機では何かしらの機能を自分で設定しない限り、何も起きないキーになります。
今回はその特性を利用して、Sendkeyメソッドを使って入力させています。
objShell.SendKeys "{F15}"
同様にF13、F14キーも存在するのですが、ここは趣味の問題なのかもしれません。なんとなく15ってキリがいいように見えたので…
あとは上記処理を無限ループさせるだけで成立します。
あとがき
今回はVBSでスリープに入らないようにするスクリプトを作成してみました。
仕組みは簡単ですが、F15キーというちょっとレアなキー入力を使ってみたかったというのが正直なところですw
作業中に席を外した時にスリープになるとパスワードロックされててうざいとか、使っているコミュニケーションアプリで自動で退席中にさせたくないとか、そういう用途に使えると思います。
(在宅勤務が流行っている昨今、おサボりするのにも便利かもしれませんねw 自己責任でお願いします!
蛇足になりますが、こういうメッセンジャー系アプリケーションってだいぶ増えましたね、自分の頃はYahooメッセンジャーやMSNメッセンジャーが主流でした。Teams、Discord、Line、カカオトーク、ある意味Paypayのメッセージ送信機能も地味にあったり、SkypeもOfficeの仲間入りしたりとさまざまですね。
ちなみに本スクリプトは終了する方法を実装していないので、タスクマネージャから強制終了してください。強制終了するポイントは「Microsoft® Windows Based ScriptHost」のプロセスを終了してあげればOKです。(他のVBS実行していると混同しやすいので同時実行は推奨しません。
何かのお役に立てれば幸いです。
コメント