【C#.net】USBメモリの挿入を検知して、取り外しまで行う。【C#.net】USBメモリの挿入を検知して、取り外しまで行う。2020-01-21【C#.net】USBメモリの挿入を検知して、取り外しまで行う。最近は情報漏洩の問題でセキュリティ機能付きUSBメモリの使用が推奨されています。私の会社でも普通のUSBメモリは使えないという状況です。前置きはこれくらいにして今回はUSBメモリが挿入されたらイベントを取得して特定の処理を行い、取り外すという一連の流れをプログラムからやってみようと思います。USBメモリの挿入を検知したら自動的にデータを更新し安全に取り外すサーバーからデータをダウンロードして更新する・・・というのが一般的な中このアナログ的な作業は重要だったりします。挿入の検知これはウィンドウプロシージャである【WndProc】メソッドで行います。ウィンドウプロシージャとはウインドウから送られてくるメッセージを処理する関数になります。.Netのイベントへの置き換えをやってくれます。使い方としては【WndProc】メソッドを自分のフォームでオーバーライドすればいいということになります。ここからは実際に送られてきたメッセージに対しての処理について記載していきます。メッセージのID番号(Msg)から【WM_DEVICECHANGE(0x219)】を拾います。これは何かというとデバイスまたはコンピューターのハードウェア構成への変更をアプリケーションに通知します。いうことなので、これにはUSBの挿入、取り外しなどが含まれています。ここからUSBの挿入である【DBT_DEVICEARRIVAL(0x80000)】をメッセージのID番号(Msg)の追加情報(WParam)から拾います。今回は使用しませんがUSBの取り外し完了は【DBT_DEVICEREMOVECOMPLETE(0x8004)】になります。ここまででUSBが挿入されたというイベントが取得出来ました。USBメモリであるということを判断するために別の追加情報である(LParam)から【DBT_DEVTYP_VOLUME(0x00000002)】であるか取得しデバイスの種類がボリュームであることを確認します。ここまでがUSBメモリ挿入検知になります。取り外しについてはドライブレターから行うつもりなので(LParam)からドライブレターを取得し論理ボリュームに関する情報が含まれている【DEV_BROADCAST_VOLUME】構造体を使います。Bドライブということになります。取り外し取り外しに関しては下記のサイトのスクリプトをそのまま使わせて頂きました。RemoveDriveTools.RemoveDrive("D:");のようにすれば簡単に取り外しが行えます。素晴らしい!3スクリプトスクリプトは下記のとおりとなりました。}}4.まとめ今回は【RemoveDriveTools】を使わせて頂くことでやりたいことが実現出来ました。問題としてx86向けでビルドだと問題なかったのですがx64向けだと動作しないということがありました。これについては少し改造させて頂き、無事に動作させることが出来ました。このような素晴らしいコードを公開してもらえるというのは感謝しかありません。19:34【C#.net】USBメモリの挿入を検知して、取り外しまで行う。Studio】プロジェクトの初期設定でやるべきこと【C#.net】USBメモリの挿入を検知して、取り外しまで行う。(2)月別アーカイブこのサイトについてプライバシーポリシーリンクお問い合わせスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。