PC無操作でもTeams,Skypeで退席中にならない方法
「Microsoft Teams」,「Skype」ではPCステータス情報(プレゼンス)がアイコンに表示されます。
チームス、スカイプどちらもPCの無操作状態が一定時間続くと退席中などの表示になります。なので、自動で数分おきにマウスを少しずつ動かすことができればチームス、スカイプどちらも回避することができます。
方法はVBAやマクロ、マウスを動かすツールをインストールすれば可能ですが、セキュリティの問題でインストールできない方やVBAで面倒な設定をしたくない方のためにインストール不要で一番簡単な方法を紹介します。
Windowsでメモ帳が使える条件であれば、この方法でずっと連絡可能のステータス状態になります。
またこの機能はマウスを50秒ごとにほんの少し動かすだけなので、無操作状態によるスクリーンセーバー回避やPCが時間経過でロックされるのを自動で防ぐのにも利用できます。
Microsoft Teamsで退席中になる条件
- 手動でステータス状態を一時退席中に変更した場合
- 手動でステータス状態を退席中に変更
- パソコンのロック中
- スマホのTeams Appを5分以上放置する
- PC無操作状態が5分以上
自動でマウスを動かし続ける方法(常に連絡可能ステータスにする方法)
マウスを動かせばチームス、スカイプどちらも退席中になりません。なので、メモ帳に以下をコピーして貼り付けてください。
※「50秒おきに、マウスを」から最後の「}」まで漏れなくコピーしてください。
メモ帳に貼り付ける内容
# 50秒おきに、マウスを微妙に左右に揺らして退席中スクリーン セーバー等への移行の阻止を試みます。 # Ctrl+C を押すか、[×]ボタンを押すと終了。 # .NETのCursorクラスを利用するためにSystem.Windows.Formsをロード add-type -AssemblyName System.Windows.Forms # mouse_event APIを利用するための準備 $signature=@' [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); '@ $SendMouseEvent = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru echo "Ctrl+Cで終了" # マウス移動 $MOUSEEVENTF_MOVE = 0x00000001 # スリープ秒数 $SleepSec = 50 # マウスの振れ幅 # ・マウスの移動イベント生成用の振れ幅 $MoveMouseDistance = 1 # ・マウスの座標を左右にずらす用の振れ幅 $MoveMouseDistanceX = 1 # 偶数回数目は左へ、奇数回数目で右へずらすためのフラグ $Flag = $true # 永久ループ while ($true) { # スリープ Start-Sleep $SleepSec # 現在のマウスのX,Y座標を取得 $x = [System.Windows.Forms.Cursor]::Position.X $y = [System.Windows.Forms.Cursor]::Position.Y # マウス座標を少しずらす(マウスイベントを監視するOS(退席中、スクリーンセーバー、スリープ)対策) $SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, -$MoveMouseDistance, 0, 0, 0) # マウス座標を少し右にずらす(マウスイベントを監視するOS(退席中、スクリーンセーバー、スリープ)対策) $SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, $MoveMouseDistance, 0, 0, 0) # 座標を監視するアプリ対策(座標を左か右に1ピクセル分ずらすだけにする) if ($Flag) { $x += $MoveMouseDistanceX $Flag = $false; } else { $x -= $MoveMouseDistanceX $Flag = $true } [System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y) $x = [System.Windows.Forms.Cursor]::Position.X $y = [System.Windows.Forms.Cursor]::Position.Y }
名前をつけて保存するときの注意点
下の画像のように保存するときは拡張子を表示し「.ps1」で保存します。
また下の画像のように文字コードは「Shift_JIS」か「BOM付UTF-8」にしてください。
拡張子が何か、表示の方法がわからない場合は「拡張子表示」の記事を確認してください。もし不明点あったらTwitterから私に質問ください。ファイルの保存先はどこでも問題ないです。
エラーになった場合
実行エラーになる場合は保存するときの文字コードの確認、Power Shellがポリシーでブロックされてないか確認してください。
PowerShellでのポリシーはGet-ExecutionPolicyで確認できます。
変更はSet-ExecutionPolicy RestrictedのようにPowerShellからポリシーを指定できます。
実行ポリシー | 署名付き | 署名なし/ローカル | 署名なし/非ローカル | 概要 |
---|---|---|---|---|
Restricted | × | × | × | 全てのスクリプトが実行禁止。PowerShellまたはWindows OSインストール直後のデフォルト設定(Windows Server 2012 R2を除く) |
AllSigned | ○ | × | × | 署名されているスクリプトのみが実行可能。署名されていないスクリプトは実行禁止 |
RemoteSigned | ○ | ○ | × | ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。Windows Server 2012 R2では、この設定がデフォルト |
Unrestricted | ○ | ○ | △ | 全てのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される |
Bypass | ○ | ○ | ○ | 警告やユーザーへの確認なしに、全てのスクリプトが実行可能 |
作成したファイルを実行する
マウスを動かす実行ファイルの停止方法
「×」の閉じるボタンか「コントロール」+「C」をキーボードで押せば停止できます。
再度、マウスを動かし続けるにはまたファイルの右クリックから「Power Shellで実行」を選択するだけで起動出来ます。
その他の退席中にならない方法
物理的にマウスを携帯のバイブレーションで動かしたり、マウスの下に鏡をおく、キーボードの上に物を置くなどして操作状態を維持することもできますが、途中で入力が止まったり失敗したりする可能性もあるので今回紹介した方法がおすすめです。
またインストール不要なので安心できます。一度、ファイルを作成していたら次回からは右クリックから実行するだけなので簡単です。
あとは次のようにNUMLOCKを180秒おきに連打するように指定できます。
NUMLOCK以外のキーもスクリプトを書き換えれば変更できます。
メモ帳に貼り付ける内容
$m = New-Object -ComObject WScript.Shell
while($True){
$m.SendKeys(“{NUMLOCK}”)
Start-Sleep -s 180
}
上のコードをメモ帳に貼り付けmouse.ps1で保存すると右クリックから実行できます。
バッチ(batファイル)で実行したい時は?
メモ帳に貼り付ける内容
powershell -ExecutionPolicy RemoteSigned -File mouse.ps1
pause
上の文字をmouse.batの名前で保存します。「mouse.ps1」の箇所を作成したps1ファイル名に指定します。
PC無操作でもTeams,Skypeで退席中にならない方法-まとめ-
-まとめ-
- PC無操作が一定時間続くと退席中になる
- Teams,Skypeともにマウスを動かせば退席中にならない
- スクリーンセーバーやPCロックの回避に活用できる
- 一度、実行ファイルを作れば、次回は右クリックから実行するだけ
- 機能は自動で50秒おきにほんの少しマウスを動かす