DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プラグアンドプレイを察知するイベントについて

環境/言語:[windows全般]
分類:[.NET]

どなたかPnP(プラグアンドプレイ)で
デバイス(外付けHD,USBメモリ等)を接続したことを
関知する方法(イベント)が存在し、
ご存じのかたがいらっしゃったらご教授ください。
ならべくTimerを使いたくないので、お願いします
■No21165に返信(ahoさんの記事)
> どなたかPnP(プラグアンドプレイ)で
> デバイス(外付けHD,USBメモリ等)を接続したことを
> 関知する方法(イベント)が存在し、
> ご存じのかたがいらっしゃったらご教授ください。
> ならべくTimerを使いたくないので、お願いします
> 

こんなかんじで。

    Private Const WM_DEVICECHANGE As Integer = &H219
    Private Event DeviceChanged As EventHandler

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_DEVICECHANGE Then
            RaiseEvent DeviceChanged(Me, EventArgs.Empty)
        End If
        MyBase.WndProc(m)
    End Sub
すばやい返答ありがとうございます
ネイティブなAPIにあったんですね
早速試してみます
REIさん本当にありがとうございます

おかげさまで満足のいくコードがかけました
ありがとうございます

const int DBT_DEVICEREMOVECOMPLETE = 0x8004;

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_DEVICECHANGE)
{
if (m.WParam.ToInt32() == DBT_DEVICEARRIVAL)
{
int devType = Marshal.ReadInt32(m.LParam, 4);
if (devType == DBT_DEVTYP_VOLUME)
{
}
}
else if (m.WParam.ToInt32() == DBT_DEVICEREMOVECOMPLETE)
{
int devType = Marshal.ReadInt32(m.LParam, 4);
if (devType == DBT_DEVTYP_VOLUME)
{
}
}
}
base.WndProc(ref m);
}
それと管理人様いつもお世話なっています
おかげさまで自作のファイラーがもう少しで完成しそうです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板