PR

【インストール不要】Teams,Slackを自動で常に退席中の表示にしない方法プレゼンス、スクリーンセーバー防止!PCロック回避する

スポンサーリンク

PC無操作でもTeams・Slackで退席中にならない方法【完全版】

スポンサーリンク

はじめに

Microsoft TeamsやSlackを使用していると、PCを少し離席しただけで「退席中」ステータスに変わってしまい、困った経験はありませんか?

この記事では、インストール不要で簡単に「退席中」を回避する方法をご紹介します。VBAやマクロの設定も不要で、Windowsのメモ帳があれば誰でも実行できる方法です。

TeamsやSlackが「退席中」になる条件

Idea

Microsoft Teamsの場合

  • PC無操作状態が5分以上継続
  • パソコンがロック状態
  • 手動でステータスを「退席中」に変更
  • スマホアプリを5分以上放置

Slackの場合

  • PC無操作状態が一定時間継続(設定により異なる)
  • 手動でステータスを変更

解決方法:自動マウス移動スクリプト

この方法は、50秒ごとにマウスを微細に動かすことで、システムに「PCが使用中」であることを認識させます。

ステップ1:スクリプトファイルの作成

  1. メモ帳を開きます
  2. 以下のコードをコピーして貼り付けます
# 100秒おきに、マウスを微妙に左右に揺らして退席中・スクリーンセーバー等への移行を阻止します
# Ctrl+C を押すか、[×]ボタンを押すと終了


# System.Windows.Formsをロード(.NETのCursorクラスを利用のため)
add-type -AssemblyName System.Windows.Forms

# mouse_event APIを利用準備
$sgnt=@' 
      [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);
'@

$SendME = Add-Type -memberDefinition $sgnt -name "Win32MouseEventNew" -namespace Win32Functions -passThru

echo "Ctrl+Cで終了"

# マウス移動
$ME_MOVE = 0x00000001

# スリープ秒数(100秒)
$SleepSec = 100

# ・マウス移動イベントの振幅
$MMDist = 1
# ・マウスの座標を左右へ動かす幅
$MMDistX = 1

# 偶数回目は左、奇数回目は右へずらすフラグ
$Flg = $true

# 永久ループ(Ctrl+Cで割込み終了)
while ($true) {
    # スリープさせる
    Start-Sleep $SleepSec

    # マウスのX,Y座標取得
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y

    # マウスを左に移動
    $SendME::mouse_event($ME_MOVE, -$MMDist, 0, 0, 0)

    # マウスを右に移動
    $SendME::mouse_event($ME_MOVE, $MMDist, 0, 0, 0)

    # マウスの移動決定フラグ(左か右)
    if ($Flg) {
        $x += $MMDistX
        $Flg = $false;
    }
    else {
        $x -= $MMDistX
        $Flg = $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
}

ステップ2:ファイルの保存

  1. 名前を付けて保存を選択
  2. ファイル名:mouse_mover.ps1(拡張子.ps1が重要です)
  3. 文字コード:UTF-8またはShift_JISを選択
  4. 保存場所:デスクトップなど、わかりやすい場所

⚠️ 重要な注意点

  • 必ず拡張子を.ps1にしてください
  • 拡張子が表示されていない場合は、エクスプローラーの「表示」タブから「ファイル名拡張子」にチェックを入れてください

拡張子が何か、表示の方法がわからない場合は「拡張子表示」の記事を確認してください。もし不明点あったらTwitterから私に質問ください。ファイルの保存先はどこでも問題ないです。

ステップ3:PowerShellの実行許可設定

初回実行時のみ、以下の設定が必要な場合があります:

  1. Windowsキー + Xを押す
  2. **「Windows PowerShell(管理者)」**を選択
  3. 以下のコマンドを入力: Set-ExecutionPolicy RemoteSigned
  4. 「Y」を入力してEnterキーを押す

ステップ4:スクリプトの実行

  1. 作成したmouse_mover.ps1ファイルを右クリック
  2. **「PowerShellで実行」**を選択
  3. PowerShellウィンドウが開き、マウス移動が開始されます

エラーになった場合

実行エラーになる場合は保存するときの文字コードの確認、Power Shellがポリシーでブロックされてないか確認してください。

PowerShellでのポリシーはGet-ExecutionPolicyで確認できます。

スクリプトが実行できない場合の対処法

PowerShellスクリプトがブロックされることがあります。その場合、以下の手順で設定を変更してください。

「Windowsキー + X」を押し、「Windowsターミナル(管理者)」を開く

次のコマンドを入力して「Enter」キーを押す (このユーザーだけスクリプト実行許可)

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

「Y」を入力して「Enter」

これでスクリプトの実行が許可されます。

PS C:\Windows\system32> Get-ExecutionPolicy
Restricted
PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\Windows\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\Windows\system32>

スクリプトの停止方法

以下のいずれかの方法で停止できます:

  • PowerShellウィンドウの**×ボタン**をクリック
  • Ctrl + Cキーを押す

追加機能:キーボード操作版

マウス移動ではなく、NumLockキーを定期的に押す方法もあります:

# 180秒おきにNumLockキーを押すスクリプト
Add-Type -AssemblyName System.Windows.Forms

try {
    Write-Host "NumLockキー押下スクリプトを開始しました。"
    Write-Host "終了するには Ctrl+C を押すか、ウィンドウを閉じてください。"
    
    $counter = 0
    while ($true) {
        [System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}")
        Start-Sleep -Milliseconds 100
        [System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}")
        
        $counter++
        Write-Host "NumLock実行: $counter 回目 ($(Get-Date -Format 'HH:mm:ss'))"
        
        Start-Sleep -Seconds 180
    }
} catch [System.Exception] {
    Write-Host "スクリプトが中断されました。"
}

バッチファイル版(.bat)

より簡単に実行したい場合は、バッチファイルを作成できます:

  1. メモ帳に以下を入力: @echo offpowershell -ExecutionPolicy RemoteSigned -File mouse_mover.ps1pause
  2. start_mouse_mover.batとして保存
  3. ダブルクリックで実行

トラブルシューティング

エラーが発生する場合

  • 文字コードを確認してください(UTF-8またはShift_JIS)
  • 拡張子.ps1になっているか確認
  • PowerShellの実行ポリシーを確認:Get-ExecutionPolicy

実行ポリシーの詳細

実行ポリシー署名付き署名なし/ローカル署名なし/ローカル概要
Restricted×××全てのスクリプトが実行禁止。PowerShellまたはWindows OSインストール直後のデフォルト設定(Windows Server 2012 R2を除く)
AllSigned××署名されているスクリプトのみが実行可能。署名されていないスクリプトは実行禁止
RemoteSigned×ローカルに保存されているスクリプトは実行可能。インターネットからダウンロードしたスクリプト(非ローカルのスクリプト)は、署名されているもののみが実行可能。Windows Server 2012 R2では、この設定がデフォルト
Unrestricted全てのスクリプトが実行可能。ただしインターネットからダウンロードしたスクリプトは、実行するかどうかが確認されるので、ユーザーが明示的に許可した場合のみ実行される
Bypass警告やユーザーへの確認なしに、全てのスクリプトが実行可能

PowerShellスクリプトの実行ポリシー
スクリプトには署名付きと署名なし、ローカルスクリプトと非ローカルスクリプトという違いがあり、ポリシーによってそれぞれ実行できるかどうかが決まる。デフォルトでは全てのスクリプトが実行不可能になっており、他のポリシーに変更するまで、実行できない。
:実行可能、:実行時にユーザーの確認が必要、×:実行不可

その他の方法

物理的な方法

  • マウスの下に振動する携帯電話を置く
  • マウスの下に鏡を置く(光学マウスの場合)
  • キーボードに軽い物を置く

ただし、これらの方法は確実性に欠けるため、PowerShellスクリプトの使用をおすすめします。

まとめ

この方法を使用することで:

インストール不要で実行可能
セキュリティリスクなし
確実にステータス維持
スクリーンセーバー防止にも効果的
一度設定すれば簡単に再実行可能

TeamsやSlackでの「退席中」問題を解決し、円滑なコミュニケーションを維持しましょう!

注意: 会社のポリシーや規則に従って使用してください。また、実際に離席する際は適切にステータスを変更することをおすすめします。

コメント

タイトルとURLをコピーしました