himanago

Azure・C#などのMS系技術やLINE関連技術など、好きな技術について書くブログ

画面ロックのショートカットをタスクバーにピン留めする(Windows 10)

はじめに

こんにちは。
今回は画面ロックをタスクバーからかんたんに行えるようにする小技を紹介します。

経緯

(本題とは関係ないので読み飛ばして結構です) 最近会社のメインPCが変わりました。念願のWindows10です。
会社では長らく開発用(Win8.1)とメイン(Win7)の2台体制で仕事していましたが、今回メイン機が7→10と入れ替わったかたち。

この2台はInput Directorというツールでマウス・キーボードを共有しています。

Input Directorは、PCを同一ネットワーク上にある別のPCから操作するためのツールです。
マスター(操作する側のPC)のマウスとキーボードで、スレーブ側(操作される側のPC)を操作できる優れものです。

なのですが、1点、不便なのが画面ロックです。
画面ロックは通常、Winキー+Lやファンクションキーの組み合わせなどで行えますが、マウス・キーボード共有している状態でスレーブ側を画面ロックしようとしても、マスター側がロックされるだけで、スレーブ側はとロックされません。
つまり、キーボード共有した状態で画面ロックのショートカットキーを入力すると、スレーブ側ではなくマスター側がロックされてしまうので、スレーブ側をロックするには別の手段を用いる必要が出てきます。
そこで使ったのが、今回の「タスクバーに画面ロックショートカットをピン留めする」という方法です。

画面ロックをコマンドで行う

画面ロックをタスクバーから実行するために、まず考えたのはバッチ化する、ということでした。
バッチ化するために、コマンドから画面ロックを実行する方法を調べたところ、下記の記事がヒットしたので、使わせていただきました。

www.projectgroup.info

ここに書かれている通り、「rundll32.exe user32.dll,LockWorkStation」と書いたファイルを作成し、拡張子を「bat」すればOKです。
このファイルをダブルクリックなどで実行すると、しっかり画面ロックされます。 (今回は「ロック.bat」というファイルにしました)

ショートカット化する

バッチファイルは、そのままではタスクバーにピン留めできません。 f:id:himanago:20170729230928p:plain

そこで、作ったバッチファイルをショートカット化します。
バッチファイルを右クリック→ショートカットの作成、とするとショートカットができます(ショートカットの名前は「ロック」にしておきます)。
これだけではまだタスクバーにピン留めできないので、これをコマンドプロンプト経由で呼ぶよう、変更します。 今回はバッチファイルは「C:\bat」のフォルダに保存しているので、作成したショートカットのリンク先は「C:\bat\ロック.bat」となっています。
これを、「C:\bat\ロック.bat」→「C:\Windows\System32\cmd.exe /C C:\bat\ロック.bat」と変更することで、コマンドプロンプト経由で呼ばれるようになります。
f:id:himanago:20170729231714p:plain:w300

こうすると、バッチファイルはタスクバーにピン留めできるようになります。

f:id:himanago:20170729234003p:plain:w400

コマンドプロンプトのアイコンだと味気ないので、アイコンも変更します。
アイコンはフラットデザインでよさげなものを選択。今回はこちらの「PNG」「背景なし」を使わせていただきました。

flat-icon-design.com

これをicoに変換すると、ショートカットアイコンとして使えるようになります。
今回はオンラインで変換できる下記のサイトを使用。

app.tree-web.net

アイコンの準備ができたら、再びショートカットのプロパティを開き、アイコンを変更し、タスクバーにピン留めしなおします。
これで、ちょっとおしゃれな画面ロックショートカットをタスクバーにピン留めすることができました。

f:id:himanago:20170730011353p:plain:w200

もう一工夫

これだけでもいいのですが、この状態でピン留めしたショートカットから画面ロックをしようとすると、コマンドプロンプトの画面が一瞬出てしまいます。
そこで、コマンドプロンプトが出ない方法を調べると、VBScriptで記述すればよい、ということがわかりました。

d.hatena.ne.jp

拡張子を変更し、「ロック.vbs」というファイル名にします。 中身は以下のコードに変更します。

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "rundll32.exe user32.dll,LockWorkStation",0
Set oShell = Nothing

ショートカットのプロパティのリンク先も、VBScriptになったので以下のように実行するexeを変更します。

C:\Windows\System32\wscript.exe //B C:\bat\ロック.vbs

最後に、ショートカットをタスクバーにピン留めしなおします。
これで、ワンクリックできれいにロックがかかるようになりました!
快適な2PC生活が送れそうです。