【C#】外部デバイス接続・切断を検知する方法

【C#】外部デバイス接続・切断を検知する方法

C#で非同期プログラミングをする方法

ながれです。

 

今回はC#の外部デバイス接続・切断検知の方法についてお話していきます。

外部デバイスの接続や切断を検知したい場面って結構ありませんか?

USBカメラ、マイク、マウス、その他諸々。

ループを回して、DeviceInformationクラスで一致する名前のデバイスを監視するのも良いですが、相当CPU負荷が上がります。

今回ご紹介するのは、ループ監視をしなくてもデバイス接続・切断を検知してくれる方法です。

是非最後までご覧ください!

 

DeviceWatcherクラス

Windows.Devices.EnumerationのDeviceWatcherクラスで、外部デバイスの接続・切断検知が可能です。

public sealed class DeviceWatcher


デバイスが動的に列挙されるため、最初の列挙が完了した後にデバイスが追加、削除、または変更された場合にアプリが通知を受け取ります。

使い方は以下。

上記でDeviceWatcherを使う準備は完了です。

Unity VR 超入門 : Unity と C# をゼロから学んで5つの VR ゲーム を作ってみよう

Watcher_DeviceAdded,Watcher_DeviceUpdated,Watcher_DeviceRemoved,Watcher_EnumerationCompleted,Watcher_Stoppedはメソッド名です。各イベント発生時に行う処理をメソッド内に追加してください。

各メソッドの引数で、デバイスのデバイス名・VenderID・ProductIDなどが取得できるため、必要に応じて取得して処理を行ってください。

ただし、引数の「deviceInfoUpdate」は直接VenderIDやProductIDが取得できないです。

deviceInfoUpdateで取得できる文字列内にVenderIDやProductIDが含まれているので、IndexOfメソッドやContainsメソッドで指定のVenderID,ProductIDが含まれているかを判断してください。

 

デバイス接続時は

Added,Updated,EnumerationCompleted

デバイス切断時は

Removed,Updated,EnumerationCompleted

のイベント通知があった(はず…)です。

 

まとめ

外部デバイスの接続・切断検知はDeviceWatcherクラスを利用してください。

デバイスの列挙と監視は、DeviceWatcherクラスを利用することをMicrosoftも推奨しています。

以上です。

 

MicrosoftのWindowsデベロッパーの情報ってすごい見にくいですよねー…

Unity ゲーム開発:インディーゲームクリエイターが教える C#の基礎からゲームリリースまで

PCカテゴリの最新記事