リモートデスクトップ接続で NumLock が変わる場合

ALL
スポンサーリンク

リモートデスクトップ接続時に、接続元のNumLock状態がリモートPCに反映されます。しかしリモートデスクトップの切断時は、変更されたNumLock状態は元に戻されません。
通常NumLockをOFFにしているノートPCと、NumLockをONにしているデスクトップPC間でリモートデスクトップを利用すると、利用後にリモートPCだった方は NumLockの状態がいつもと違うことになります。

PCへのログイン時に、NumLockを ONまたはOFFにセットするようにすれば、リモートデスクトップ接続で変更されていたとしても問題ありません。
次の手順で設定します。

次の内容の PowerShellスクリプトをファイル名 set_numlock.ps1 で用意します。
ここでは C:\set_numlock.ps1 に保存したとします。

param(
    [Parameter(Mandatory = $true)]
    [ValidateSet("on", "off")]
    [string]$Mode
)

Start-Sleep -Seconds 1

Add-Type @"
using System.Runtime.InteropServices;
public class Keyboard {
  [DllImport("user32.dll")]
  public static extern short GetKeyState(int nVirtKey);
  [DllImport("user32.dll")]
  public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
}
"@

$VK_NUMLOCK = 0x90
$KEYEVENTF_EXTENDEDKEY = 0x1
$KEYEVENTF_KEYUP = 0x2

$state = ([Keyboard]::GetKeyState($VK_NUMLOCK) -band 1) -ne 0

switch ($Mode) {
    "on" {
        if (-not $state) {
            [Keyboard]::keybd_event($VK_NUMLOCK, 0x45, $KEYEVENTF_EXTENDEDKEY, 0)
            [Keyboard]::keybd_event($VK_NUMLOCK, 0x45, $KEYEVENTF_EXTENDEDKEY -bor $KEYEVENTF_KEYUP, 0)
        }
    }
    "off" {
        if ($state) {
            [Keyboard]::keybd_event($VK_NUMLOCK, 0x45, $KEYEVENTF_EXTENDEDKEY, 0)
            [Keyboard]::keybd_event($VK_NUMLOCK, 0x45, $KEYEVENTF_EXTENDEDKEY -bor $KEYEVENTF_KEYUP, 0)
        }
    }
}

スタートメニュー から Windows管理ツール より タスクスケジューラ を起動します。タスクスケジューラの画面左のツリーの [タスクスケジューラ ライブラリ] の上で右クリックし、[タスクの作成] を選択します。

全般タブで、「名前」を任意のものを記述します。

トリガータブで[新規]ボタンを押します。
現れたダイアログで、”タスクの開始” を [ユーザーセッションへの接続時] にします。
[ローカルコンピューターからの接続] を選択して、「OK」を押します。

操作タブで[新規]ボタンを押します。
現れたダイアログで、“プログラム/スクリプト” に、powershell.exe を指定します。
”引数の追加” で、NumLockをOFFにする場合は
-NoProfile -ExecutionPolicy Bypass -File “C:\set_numlock.ps1” off
と記述し、NumLockをONにする場合は
-NoProfile -ExecutionPolicy Bypass -File “C:\set_numlock.ps1” on
と記述して[OK]ボタンを押します。

条件タブで、「コンビューターをAC竜源で使用している場合のみタスクを問始する」のチェックを外し、[OK]ボタンを押します。

これで、リモートデスクトップを利用すると、利用後にリモートPCだった方で NumLockの状態がいつもと違うことはなくなります。

コメント