Results 1 to 9 of 9

Thread: vb.net :: detecting a usb or cd media

  1. #1
    Newbie
    Join Date
    Jul 2006
    Location
    Central Illinois
    Posts
    5

    vb.net :: detecting a usb or cd media

    the end result of what i'm trying to develop is that when a thumb drive or cd-rom is inserted into the system, it fires an event that will allow me to search through the contents of this new media and check for particular filetypes...

    anyone have any thoughts? i've been searching for a few days and haven't really found anything pertaining to this particular line of thought...

    thanks in advance.

  2. #2
    Newbie mrspangle's Avatar
    Join Date
    Sep 2003
    Posts
    40
    You want to listen on the window for the HWND value. Look up these HWND values on msdn, i've managed to listen out for new media instered value.

    Can't remember the code sorry!

  3. #3
    Maximum Bitrate Jarrod's Avatar
    Join Date
    Jan 2002
    Location
    Melb, Australia.
    Posts
    475
    Code:
        ' USB DEVICE DETECTION BELOW:
        '========================================================================================================================
    
        Private WithEvents m_MediaConnectWatcher As ManagementEventWatcher
    
        Public Sub StartDetection()
            ' __InstanceOperationEvent will trap both Creation and Deletion of class instances
            Dim query2 As String = "SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA ""Win32_DiskDrive"""
            m_MediaConnectWatcher = New ManagementEventWatcher(query2)
            m_MediaConnectWatcher.Start()
        End Sub
    
    
        Private Sub Arrived(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs) Handles m_MediaConnectWatcher.EventArrived
    
            Dim mbo, obj As ManagementBaseObject
    
            ' the first thing we have to do is figure out if this is a creation or deletion event
            mbo = CType(e.NewEvent, ManagementBaseObject)
            ' next we need a copy of the instance that was either created or deleted
            obj = CType(mbo("TargetInstance"), ManagementBaseObject)
    
            Select Case mbo.ClassPath.ClassName
                Case "__InstanceCreationEvent"
                    If obj("InterfaceType") = "USB" Then
                        MsgBox(obj("Caption") & " (Drive letter " & GetDriveLetterFromDisk(obj("Name")) & ") has been plugged in")
                    Else
                        MsgBox(obj("InterfaceType"))
                    End If
                Case "__InstanceDeletionEvent"
                    If obj("InterfaceType") = "USB" Then
                        MsgBox(obj("Caption") & " has been unplugged")
                        If obj("Caption") = USBDriveName Then
                            USBDriveLetter = ""
                            USBDriveName = ""
                        End If
                    Else
                        MsgBox(obj("InterfaceType"))
                    End If
                Case Else
                    MsgBox("nope: " & obj("Caption"))
            End Select
        End Sub
    
        Private Function GetDriveLetterFromDisk(ByVal Name As String) As String
            Dim oq_part, oq_disk As ObjectQuery
            Dim mos_part, mos_disk As ManagementObjectSearcher
            Dim obj_part, obj_disk As ManagementObject
            Dim ans As String
    
            ' WMI queries use the "\" as an escape charcter
            Name = Replace(Name, "\", "\\")
    
            ' First we map the Win32_DiskDrive instance with the association called
            ' Win32_DiskDriveToDiskPartition.  Then we map the Win23_DiskPartion
            ' instance with the assocation called Win32_LogicalDiskToPartition
    
            oq_part = New ObjectQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & Name & """} WHERE AssocClass = Win32_DiskDriveToDiskPartition")
            mos_part = New ManagementObjectSearcher(oq_part)
            For Each obj_part In mos_part.Get()
    
                oq_disk = New ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & obj_part("DeviceID") & """} WHERE AssocClass = Win32_LogicalDiskToPartition")
                mos_disk = New ManagementObjectSearcher(oq_disk)
                For Each obj_disk In mos_disk.Get()
                    ans &= obj_disk("Name") & ","
                Next
            Next
    
            Return ans.Trim(","c)
        End Function
    That should get you started for detecting USB devices
    Not sure exactly what import statements you will need, but probably 'Imports System.Management' and maybe others.

    As for CDROM:
    Code:
        Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
            If m.Msg = WM_DEVICECHANGE Then ' Detect CD
                If (m.WParam.ToInt32() = DBT_DEVICEREMOVECOMPLETE) Then
                    MsgBox("CD Removal Complete!")
                ElseIf (m.WParam.ToInt32() = DBT_DEVICEARRIVAL) Then
                    MsgBox("CD Now Avaiable!")
                End If
            Else
                MyBase.WndProc(m)
            End If
        End Sub
    Jarrod - Holden VX S!

  4. #4
    Newbie
    Join Date
    Jul 2006
    Location
    Central Illinois
    Posts
    5
    jarrod, fantastic! thanks so much. i had actually figured out the usb one, but the cd-rom snippet is the perfect size to fit snugly where i need it to.

  5. #5
    Maximum Bitrate Jarrod's Avatar
    Join Date
    Jan 2002
    Location
    Melb, Australia.
    Posts
    475
    No problems, what features will this software have btw?
    Jarrod - Holden VX S!

  6. #6
    Newbie
    Join Date
    Jul 2006
    Location
    Central Illinois
    Posts
    5
    sorry for the SUPER late response (thought mine was the last one in here)... at the moment, i'm writing a new frontend (haha, yeah, i know... ANOTHER frontend). i'm not sure whether or not i'll ever release it, or whether it'll be for vehicles other than bmw's or not. at the moment, i'm just playing around with things, seeing what i can do. just an experiment at the moment.

  7. #7
    Maximum Bitrate Jarrod's Avatar
    Join Date
    Jan 2002
    Location
    Melb, Australia.
    Posts
    475
    haha, suuuuper late If a frontend thats available doesnt do the job for ya, code your own
    Jarrod - Holden VX S!

  8. #8
    Newbie
    Join Date
    Jun 2008
    Posts
    1

    hello

    i use ur code but my asp.net 2.0 can not recognize the ManagementEventWatcher

    can tell me this is dll or ur genrated class

    if it is ur genrated class or dll then please send me that class or dll.

    if not then please tell me how to use this................

    salman_interlogics@yahoo.com

  9. #9
    Newbie
    Join Date
    Oct 2009
    Posts
    1

    USB Mouse Connection/Disconnection

    Jarrod,

    Thanks for posting this code - it works great for detecting USB keys. One thing I'm trying to do is figure out how to detect when a USB mouse is plugged in. I tried modifying the code to query Win32_PointingDevices and Win32_USBControllerDevice but doesn't seem to work. Any suggestions on how I can listen for a USB Mouse connect/disconnect?

    Thanks again!

    Adam

Similar Threads

  1. USB Roundup
    By JPuma in forum General Hardware Discussion
    Replies: 9
    Last Post: 09-17-2006, 04:47 PM
  2. USB DVD/RW issues
    By kamikaze2112 in forum General Hardware Discussion
    Replies: 1
    Last Post: 08-04-2006, 10:43 AM
  3. Replies: 15
    Last Post: 05-04-2006, 04:53 PM
  4. My USB/Wifi troubles.
    By JPuma in forum General Hardware Discussion
    Replies: 0
    Last Post: 09-23-2005, 11:44 AM
  5. Help!
    By WRX2001 in forum PhoneControl
    Replies: 3
    Last Post: 01-25-2005, 03:50 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •