Windows 10でヘッドホンを抜いたときに自動的に音声をミュートする方法

Windows 10には、ヘッドホンを抜いたときに音声をミュートする汎用スイッチはありません。PowerShellスクリプトを使用すれば、デバイス変更イベントを監視し、ヘッドホンを抜いた後にデフォルトの再生エンドポイントをミュートできます。このスクリプトは手動で起動することも、タスクスケジューラでサインイン時に起動することも可能です。

このスクリプトは再生をミュートするだけで、アプリを一時停止するわけではありません。また、ヘッドホンだけでなくPC全体のデバイスの変更を監視するため、他のデバイスからもトリガーされる可能性があります。

Windowsがヘッドホンをどのように認識するかを確認してください。

「スタート」>「設定」>「システム」>「サウンド」を開き、 「出力」の下にヘッドホンが個別に表示されているか確認してください。Windowsではここで出力先を選択したり音量を調整したりできますが、プラグを抜いたときに自動的にミュートする設定はできません。デバイスの制御方法については、 Microsoftのオーディオ設定ガイドを参照してください。

Windows 10の設定を開くと、「システムとサウンド」が表示され、「出力デバイス」セレクターの下に「スピーカー」と「ヘッドホン」が表示されます。
「サウンド」ページでは出力先を選択できますが、自動的にミュートするルールは作成されません。

PCのオーディオユーティリティでヘッドホンジャックの設定を確認してください。利用できるかどうかはオーディオドライバーによって異なります。アナログジャックに物理的に差し込んだプラグ自体はプラグアンドプレイデバイスではありません。オーディオアダプターによってはジャックの存在をWindowsに報告するものと報告しないものがあるため、このスクリプトでは3.5mmジャックの抜き差しを見逃す可能性があります。Microsoftはこの違いについてオーディオエンドポイントのドキュメントで説明しています。USBまたはBluetoothヘッドセットも、デバイスとドライバーによっては、Windowsがそれらを追加または削除したときにデバイスイベントをトリガーすることがあります。

PowerShellスクリプトを保存します

  1. Prateek Singh氏が作成したオリジナルのPSAutoMuteスクリプトを開き、実行する前にコードを確認してください。このスクリプトは、Windowsのオーディオインターフェイスを使用してデフォルトのマルチメディア再生エンドポイントをミュートし、WMIイベントをリッスンします。
  2. を などの永続的なフォルダーに保存しますC:\Scripts。メモ帳で、[ファイル] > [名前を付けて保存]を選択し、ファイル名をにMuteWhenHeadphonesDisconnect.ps1して、[ファイルの種類]を[すべてのファイル (*.*)]に設定します。ファイルエクスプローラーで.ps1拡張子 が ではなく と表示されていることを確認します.ps1.txt。
ファイル名が「MuteWhenHeadphonesDisconnect.ps1」で、ファイルの種類が「すべてのファイル」に設定されたWindowsの「名前を付けて保存」ダイアログ。
.ps1拡張子で保存し、「すべてのファイル」を選択して、メモ帳が.txtを追加しないようにしてください。

このスクリプトのイベントクラスは広範です。Microsoftによると、Win32_DeviceChangeEventコンピュータ全体におけるデバイスの変更を網羅しており、イベントタイプ2は到着、タイプ3は取り外しを意味します。このスクリプトは、音がミュートされている場合、取り外し時にミュートし、到着時にミュートを解除します。そのため、USBドライブを取り外すと音声がミュート解除されたり、マウスを取り外すとミュートされたりする可能性があります。スクリプトは、ユーザーがスピーカーをミュートしたかどうかを判別できません。これらの定義については、Microsoftのイベントクラスリファレンスを参照してください。

Windows PowerShell 5.1で実行してください。PowerShell 7 では実行しないでください。PowerShell 7 では Microsoft が削除した を使用しますRegister-WmiEvent。Windows PowerShell 5.1 のリファレンスとPowerShell 7 の互換性のない変更点を参照してください。

PowerShell スクリプトは実行可能なコードなので、まずファイルを確認してください。実行が許可されている個人用 PC では、RemoteSignedこの PowerShell プロセスのみに使用してください。永続的なマシン ポリシーやユーザー ポリシーは変更されません。それでも Windows がダウンロードしたファイルをブロックする場合は、ファイルを確認してから実行してくださいUnblock-File -Path "C:\Scripts\MuteWhenHeadphonesDisconnect.ps1"。Microsoft は、実行ポリシー ガイダンスでこれらの範囲について説明しています。職場や学校のポリシーを上書きしないでください。

実行してテストする

通常ユーザーとしてスタートメニューからWindows PowerShellを開き、スクリプトフォルダに移動してから、モニターを起動します。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force
Set-Location C:\Scripts
.\MuteWhenHeadphonesDisconnect.ps1

ファイルを別の場所に保存した場合は、フォルダパスを置き換えてください。スクリプトはループで待機するため、PowerShellウィンドウがビジー状態になります。テスト中はウィンドウを開いたままにしておいてください。停止するには、ウィンドウ内でCtrl+Cを押してください。

Windows 10デスクトップ上のWindows PowerShellで、MuteWhenHeadphonesDisconnect.ps1起動コマンドを入力し、スクリプトを実行した。
Windows PowerShellでモニターを起動し、そのウィンドウを開いたままにしておきます。

音量を小さくして始めてください。ヘッドホンを一度抜き差しして、Windowsがミュートしてから音声を復元することを確認してください。リスナーはシステム全体に適用されるため、他のデバイスの変更でも同じ反応が起こる可能性があります。アナログジャックが何も反応しない場合は、オーディオドライバーがデバイスの取り外しを報告していない可能性があります。間違った再生デバイスが影響を受けている場合は、Windowsの既定のエンドポイントがどれに設定されているかを確認してください。スクリプトは、アプリ固有の出力ではなく、そのエンドポイントを制御します。

サインイン時に開始します

  1. タスクスケジューラを開き、「基本タスクの作成」を選択して、タスクに名前を付けます。
  2. トリガーとして「ログオン時」を選択してください。これにより、再生デバイスが使用可能なユーザーセッションでモニターが起動します。Microsoft は、対応するトリガーをNew-ScheduledTaskTrigger-AtLogOnで説明しています。
  3. 「プログラムの開始」を選択します。「プログラム/スクリプト」を「」に設定しますpowershell.exe。「引数の追加」に「」と入力し-NoProfile -ExecutionPolicy RemoteSigned -File "C:\Scripts\MuteWhenHeadphonesDisconnect.ps1"、ファイルの完全なパスに変更します。
  4. ウィザードを完了したら、タスクのプロパティを開き、ログイン時のみ実行されるように設定してください。ウィンドウを非表示または最小化する前に、次回のログイン時にテストしてください。スケジュールされたタスクの実行中は、2つ目のタスクを開始しないでください。
Windowsタスクスケジューラの基本タスクウィザードで、トリガーとして「ログオン時」、選択されたアクションとして「プログラムの開始」が表示されている。
ログオンタスクとして「プログラムの起動」を選択し、PowerShellとスクリプトを指定します。

別の方法を用いるべき時

この回避策は、デバイスの変更動作が広範囲にわたって許容される場合に最適です。Microsoft の Core Audio API には、IMMNotificationClientオーディオエンドポイントの追加および削除通知用のインターフェイスがありますが、リンク先のスクリプトではそれが実装されていません。ドライバーは、物理的なジャックの変更もエンドポイント イベントとして公開する必要があります。ヘッドホンのみの動作を実現するには、ジャック検出を明示的にサポートする PC メーカーのユーティリティ、または適切なオーディオエンドポイントをフィルタリングするツールを使用してください。Microsoft のIMMNotificationClient ドキュメントを参照してください。

自動起動を取り消すには、タスクスケジューラでタスクを無効にするか削除してください。手動で起動したスクリプトを停止するには、PowerShellウィンドウでCtrl+Cを押してください。

コメントを残す

FotoSketcherで写真を絵画、スケッチ、漫画に変換

FotoSketcherで写真を絵画、スケッチ、漫画に変換

FotoSketcher Studioを使えば、写真を絵画、鉛筆画、漫画に変換できます。エフェクトの選択方法、プレビューの調整方法、作品の保存方法を学びましょう。

オーディオ識別ツールで音声ファイルを詳細に分析・識別する

オーディオ識別ツールで音声ファイルを詳細に分析・識別する

オーディオ識別子がビットレート、エンコーダー、タグについて何を明らかにするのか、従来のワークフローがどのように機能するのか、そして現在利用可能なツールの中で、ファイルの検査や楽曲の識別に使えるものはどれなのかを学びましょう。

My Photo Index:Windows用オープンソース写真整理ツール

My Photo Index:Windows用オープンソース写真整理ツール

My Photo Indexは、ローカル画像のタグ付け、評価、閲覧を行うための、Windows向けの旧来の写真カタログツールです。その機能、互換性の制限、および現在もサポートされている代替ツールについてご確認ください。

Attribute Changerを使用してファイルとフォルダの属性、日付、時刻を変更する

Attribute Changerを使用してファイルとフォルダの属性、日付、時刻を変更する

Attribute Changerを使用して、Windowsファイルの属性とタイムスタンプを編集したり、JPEG EXIF写真の日付を更新したり、バッチ変更を安全にプレビューしたりする方法を学びましょう。

Windows 10で各モニターに異なる壁紙を設定する方法

Windows 10で各モニターに異なる壁紙を設定する方法

Windows 10の各モニターに個別の壁紙を設定し、ディスプレイを識別し、画像のフィットを調整し、モニターの選択肢が見つからない場合のトラブルシューティングを行います。

pViewer:最小限の画像ビューアとマンガ&コミックリーダー

pViewer:最小限の画像ビューアとマンガ&コミックリーダー

pViewerの機能、写真モードとコミックモードの仕組み、ダウンロードすべきWindows版、そして旧バージョンと改訂版の違いについて学びましょう。

NeoDownloader:パラメータ設定とウェブサイトからの画像の一括ダウンロード

NeoDownloader:パラメータ設定とウェブサイトからの画像の一括ダウンロード

NeoDownloaderプロジェクトの作成方法、クロール範囲の選択方法、画像フィルタと保存先の設定方法、バッチダウンロードの確認方法を学びましょう。

Windows 7および8でホットキーを使って次のデスクトップ背景に切り替える方法

Windows 7および8でホットキーを使って次のデスクトップ背景に切り替える方法

Windows 7または8用のスライドショーを設定し、簡単なVBScriptショートカットを作成して、キーボードショートカットキーを割り当てて次の壁紙に進めるようにします。

XnConvert:エフェクトの適用と画像フォーマットの一括変換

XnConvert:エフェクトの適用と画像フォーマットの一括変換

XnConvertを使えば、エフェクトの適用、写真のリサイズ、画像フォーマットの一括変換が可能です。出力設定の選択、編集内容のプレビュー、オリジナル画像の保護も行えます。

PickMeApp: 保存された設定でWindowsプログラムを転送する

PickMeApp: 保存された設定でWindowsプログラムを転送する

PickMeAppを使って、インストール済みのWindowsアプリケーションを別のPCに移行しましょう。TAPパッケージの仕組み、設定の取得方法、転送できない可能性のある項目について学びます。