URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

定期的にScrollLockキーを入力するPowerShellスクリプト

 在宅勤務をするにあたっての最近のちょっとした困りごとですが、Windowsのロックがかかった後、アンロックしてもHDMI接続の外部ディスプレイが映らなくなる(No Signalになる)という現象にあっています。
 再起動すると解消するのですが、ちょっと休憩する度に再起動するのも面倒ですよね。あと、ロックは会社のポリシーで設定されているので、一般的な設定でロックやスクリーンセーバーを使わない設定にするのはNGです。
 世の中には「マウスふるふる」のようなフリーソフトもあるのですが、この手のソフトも無許可で入れていると情シスに注意されるし、許可を取るには理由も必要。

 そんなわけで、Windowsの標準機能で似たようなことをします。

 休憩の度に起動/停止する使い方だと結局使い忘れて再起動することになるので、常時起動させておくことにします。そうするとマウスを勝手に動かされるとかは困ります。
 そこで、ほとんどの場合に入力されても影響のない[ScrollLock]キーを定期的に打つことにしました。一応、Excelとかを使っているときにも影響ないように、[ScrollLock]キーは2回セットで入力します。
 他には邪魔にならないように起動したら最小化するようにしておく。

function Get-ConsoleWindowHandle { $Proc = Get-Process -Id $PID $i = 0 while ($Proc.MainWindowHandle -eq 0) { if ($i++ -gt 10) { return $null } $Proc = $Proc.Parent } return $Proc.MainWindowHandle } $Global:CONSOLE_HWND = Get-ConsoleWindowHandle if(-not ('Console.Window' -as [type])) { Add-Type -Name Window -Namespace Console -MemberDefinition ` @' [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); public static void Minimize(IntPtr hwnd) { SendMessage(hwnd, 0x0112, 0xF020, 0); } '@ } function Hide-ConsoleWindow { if ($Global:CONSOLE_HWND -and ($env:TERM_PROGRAM -ne "vscode")) { [Console.Window]::Minimize($Global:CONSOLE_HWND) } } Clear-Host echo "Keep-alive with Scroll Lock..." Hide-ConsoleWindow $WShell = New-Object -com "WScript.Shell" while ($true) { $WShell.sendkeys("{SCROLLLOCK}") Start-Sleep -Milliseconds 100 $WShell.sendkeys("{SCROLLLOCK}") Start-Sleep -Seconds 240 }

 こんな感じです。
 前半の"function ~"は起動したPowerShellコンソールを最小化するためのもの。後半の"while"で240秒ごとに[ScrollLock]キーを2回入力する動きを無限ループです。
 これをデスクトップとかに置いて、必要なとき(大抵は在宅勤務の始業時)に右クリックから「PowerShellで実行」しています。出勤とか外出時はロックしてほしいので使いません。

 そもそも変な問題の回避のためなので、PCの方をどうにかしたい。あと数ヶ月で自分の業務PCはリース更新時期なので、機種交換したいんですよね。希望が通るか否か…。

参考


        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

プロフィール

1020@管理人

都内を彷徨っているインフラエンジニアとかいう雑用係。いつだって眠い…。

最近のつぶやき

@umkn1020 (07/01-23:30)
偉い偉くないというか、必要だからやるだけでしょ。ええ、明日は休日出勤ですorz : Bing先生曰く「休日出勤はなにもえらくない」「残業は――」 - やじうまの杜 - 窓の杜 https://t.co/ch14SI8S2y @madonomoriより
@umkn1020 (07/01-08:07)
明日に在宅勤務とか絶対に効率悪いやつだ。作業とはいえ…。
@umkn1020 (06/29-09:04)
なんか調べようとしてど忘れしてしまったorz
@umkn1020 (06/28-19:13)
うーん、物流系がいま大変なのはわかるのですが、郵便局だけはダメですね。酷い…。
@umkn1020 (06/27-20:34)
[ITmedia PC USER] 自分好みのトラックボールやマウスを作れるオープンソースプロジェクト「Ploopy」 自作キットも販売中 https://t.co/VX33UlELmb

エントリーリスト

カテゴリーリスト

タグ