特定のゲームアプリケーション起動中にRaycastを自動的に終了し、ゲーム終了後に再起動するWindowsバックグラウンド監視システム。
FPSゲームなどでRaycastのホットキー(Ctrl+Space)が誤発動するのを防ぐため、ゲームプレイ中はRaycastプロセスを完全に終了させる。
- OS: Windows 10/11
- PowerShell 5.1以上
- Raycastがインストールされていること
C:\Scripts\RaycastMonitor\
├── RaycastGameMonitor.ps1 (メインスクリプト)
├── GameList.txt (ゲームリスト設定ファイル)
├── ManageGames.ps1 (管理補助スクリプト)
└── monitor.log (自動生成されるログファイル)
- GameList.txtから監視対象ゲームのプロセス名を読み込み
- 2秒ごとにゲームプロセスの起動状態を監視
- ゲーム起動検出時にRaycastプロセスを強制終了
- ゲーム終了検出時にRaycastを再起動
- すべての動作をログファイルに記録
-
スクリプト起動時の初期化
- スクリプト自身のディレクトリパスを取得
- 設定ファイル・ログファイルのパスを設定
- Raycastの実行ファイルパスを環境変数から取得 (
$env:LOCALAPPDATA\Raycast\Raycast.exe)
-
設定ファイルの確認と自動生成
- GameList.txtが存在しない場合、デフォルト設定で自動作成
- デフォルトゲーム: r5apex, Overwatch, GenshinImpact, YuanShen
-
ゲームリストの読み込み
- GameList.txtを読み込み
#で始まる行(コメント)を除外- 空行を除外
- 前後の空白をトリム
- 配列として保持
-
無限ループでの監視処理
while (true):
gameRunning = false
runningGame = null
for each game in gameNames:
if ゲームプロセスが存在:
gameRunning = true
runningGame = game
break
if gameRunning and not raycastStopped:
Raycastプロセスを強制終了
ログ出力: "ゲーム検出 (ゲーム名) - Raycast終了"
raycastStopped = true
else if not gameRunning and raycastStopped:
Raycastを起動
ログ出力: "ゲーム終了 - Raycast起動"
raycastStopped = false
2秒待機
- 関数名:
Write-Log - タイムスタンプ形式:
yyyy-MM-dd HH:mm:ss - 出力先: コンソール + ログファイル(追記モード)
- フォーマット:
[タイムスタンプ] メッセージ
- ゲームプロセスが見つからない場合: エラーを抑制(
-ErrorAction SilentlyContinue) - Raycastプロセスが見つからない場合: エラーを抑制
- Raycast実行ファイルが見つからない場合: ログにエラー出力
$scriptDir: スクリプトのディレクトリパス$gameListFile: GameList.txtのフルパス$logFile: monitor.logのフルパス$raycastPath: Raycastの実行ファイルパス$gameNames: 監視対象ゲームのプロセス名配列$raycastStopped: Raycastが停止中かどうかのフラグ(boolean)$gameRunning: ゲームが起動中かどうかのフラグ(boolean)$runningGame: 現在起動中のゲーム名
- エンコーディング: UTF-8
- 形式: 1行1プロセス名
- コメント:
#で始まる行は無視される - 空行は無視される
- プロセス名は拡張子なし(例:
r5apex.exe→r5apex)
# 監視するゲームのプロセス名を1行ずつ記載
# 行頭に#でコメント可能
r5apex
Overwatch
GenshinImpact
YuanShen
- タスクマネージャー → 詳細タブで確認
- または以下のPowerShellコマンドで確認:
Get-Process | Where-Object { $_.MainWindowTitle -ne "" } |
Select-Object Name, MainWindowTitle | Format-Table -AutoSize- 現在の監視対象ゲーム一覧を表示
- GameList.txtを編集(メモ帳で開く)
- 現在起動中のアプリケーション一覧を表示
=== Raycast Game Monitor - ゲームリスト管理 ===
現在の監視対象ゲーム:
- r5apex
- Overwatch
- GenshinImpact
- YuanShen
1. ゲームリストを編集
2. 現在起動中のアプリ一覧を表示
3. 終了
選択してください (1-3):
- 選択1: notepadでGameList.txtを開く
- 選択2: 起動中のアプリケーション一覧をテーブル形式で表示(Name, MainWindowTitle)
- 選択3: スクリプト終了
- 自動生成(初回実行時)
- エンコーディング: UTF-8
- 追記モード
- ログローテーション: なし(手動削除)
[2026-01-27 14:30:15] 監視開始 - 対象ゲーム: r5apex, Overwatch, GenshinImpact, YuanShen
[2026-01-27 14:35:22] ゲーム検出 (r5apex) - Raycast終了
[2026-01-27 16:12:45] ゲーム終了 - Raycast起動
- 名前:
Raycast Game Monitor - 説明:
ゲーム起動時にRaycastを自動終了・再起動 - セキュリティオプション:
ユーザーがログオンしているときのみ実行する - 最上位の特権で実行する: ☑ チェック
- トリガー種類:
ログオン時 - 設定: 任意のユーザー、または特定ユーザー
- 操作:
プログラムの開始 - プログラム/スクリプト:
powershell.exe - 引数の追加:
-WindowStyle Hidden -ExecutionPolicy Bypass -File "C:\Scripts\RaycastMonitor\RaycastGameMonitor.ps1"
- コンピューターをAC電源で使用している場合のみタスクを開始する: ☐ チェック解除
- その他はデフォルト
- タスクが既に実行中の場合に適用される規則:
新しいインスタンスを開始しない - その他はデフォルト
C:\Scripts\RaycastMonitor\フォルダを作成- 3つのPowerShellスクリプトを配置
- タスクスケジューラで自動起動を設定
- PC再起動またはスクリプトを手動実行
ManageGames.ps1を実行- オプション1を選択してGameList.txtを編集
- 新しいゲームのプロセス名を追加(1行1プロセス)
- 保存して閉じる
- 次回監視ループで自動的に反映される(再起動不要)
- タスクマネージャーで
powershell.exe(RaycastGameMonitor.ps1) を終了 - または、タスクスケジューラでタスクを無効化
monitor.logでログを確認- Raycastのパスが正しいか確認:
%LOCALAPPDATA%\Raycast\Raycast.exe - ゲームのプロセス名が正しいか確認(タスクマネージャー)
- アンチチートソフトウェアとの干渉なし(プロセス監視のみ、キー入力傍受なし)
- PowerShell実行ポリシーをBypassで実行(署名なしスクリプトの実行を許可)
- 監視間隔は2秒(調整可能)
- Raycastが異なるパスにインストールされている場合は手動でパスを修正が必要
- 同名のプロセスが複数存在する場合、最初に見つかったものを対象とする
- GUI設定ツール
- ログローテーション機能
- 特定のゲームごとに異なる動作を設定
- 通知機能(ゲーム検出時にトースト通知)