Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive
Open a directory on USB Drive Open a directory on USB Drive
Open a directory on USB Drive
Go Back  Xtreme Visual Basic Talk > > > Open a directory on USB Drive


Reply
 
Thread Tools Display Modes
  #1  
Old 02-19-2009, 01:47 PM
bmguida bmguida is offline
Newcomer
 
Join Date: Feb 2009
Posts: 1
Default Open a directory on USB Drive


Hello I don’t know if I am posting this in the correct forum so if not please move to where you feel is the most appropriate.

First off a short background of the project I am working on- I am developing a program that will be run off removable media (i.e. USB Flash drive). This will be a “virtual desktop” which you will be able to take with you and have the same “desktop” on any system.

As we know drive letters can change with each host system the drive is plugged into, I need to be able to determine the path for the flash drive and access a specific folder ( i.e. My Documents)

I have an picture box(representing the icon) placed on my form (form1) and when I click the icon I want to be able to open and view the a specific folder from the portable drive.

I need a click event that will determine a dynamic drive letter for a directory on the removable drive and then open that directory in an explorer window.

I have tried a few other code snippets that only provide the use with the drive letter ( but the drive must be plugged in while the program is running, in my case the program will run off the drive so it must be plugged in prior to the program running)



Code:
Imports System.Management  
Imports System.Threading  
 
Public Class Form1  
    Private WithEvents m_MediaConnectWatcher As New ManagementEventWatcher  
    Public Sub StartDetection()  
        Dim query2 As New WqlEventQuery("SELECT * FROM __InstanceOperationEvent WITHIN 1 " _  
        & "WHERE TargetInstance ISA 'Win32_DiskDrive'")  
        m_MediaConnectWatcher = New ManagementEventWatcher  
        m_MediaConnectWatcher.Query = query2  
        m_MediaConnectWatcher.Options.Timeout = New TimeSpan(1000)  
        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  
        mbo = CType(E.NewEvent, ManagementBaseObject)  
        obj = CType(mbo("TargetInstance"), ManagementBaseObject)  
        'MsgBox(mbo.ClassPath.ClassName)  
        Select Case mbo.ClassPath.ClassName  
            Case "__InstanceCreationEvent" 
                If obj("InterfaceType").ToString.ToUpper = "USB" Then 
                    'MessageBox.Show(obj("Caption") & Environment.NewLine & "Drive Letter (" & GetDriveLetterFromDisk(obj("Name") & ")"))  
                    MessageBox.Show("Drive Letter " & GetDriveLetterFromDisk(obj("Name")))  
                Else 
                    ' MsgBox(obj("InterfaceType"))  
                End If 
            Case "__InstanceDeletionEvent" 
                If obj("InterfaceType").ToString.ToUpper = "USB" Then 
                    Me.NotifyIcon1.Visible = True 
                    Me.NotifyIcon1.BalloonTipTitle = "USB Device Disconnected" 
                    Me.NotifyIcon1.BalloonTipText = obj("Caption").ToString & " has been disconnected." 
                    Me.NotifyIcon1.ShowBalloonTip(200)  
                Else 
                    ' MsgBox(obj("InterfaceType"))  
                End If 
            Case Else 
                ' MsgBox("nope: " & obj("Caption").ToString)  
        End Select 
    End Sub 
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed  
        m_MediaConnectWatcher.Stop()  
    End Sub 
    Private Sub Form1_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Handles MyBase.Load  
        StartDetection()  
 
    End Sub 
    Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown  
        ' MsgBox("Plug in a usb flash drive")  
    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 
End Class
Also I have came across the option of using the getFloders() and listing the drives in a combo box but this is not practical for my case.

Code:
TreeView1.Nodes.Clear()

If ComboBox1.Text = "C" Then

GetFolders(Nothing, My.Computer.FileSystem.SpecialDirectories.MyMusic, TreeView1)

Else

Try

GetFolders(Nothing, ComboBox1.Text & ":\music", TreeView1)

 
End Try
Neither of these have been able to solve my problem yet. Any ideas?
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump

Advertisement:





Free Publications
The ASP.NET 2.0 Anthology
101 Essential Tips, Tricks & Hacks - Free 156 Page Preview. Learn the most practical features and best approaches for ASP.NET.
subscribe
Programmers Heaven C# School Book -Free 338 Page eBook
The Programmers Heaven C# School book covers the .NET framework and the C# language.
subscribe
Build Your Own ASP.NET 3.5 Web Site Using C# & VB, 3rd Edition - Free 219 Page Preview!
This comprehensive step-by-step guide will help get your database-driven ASP.NET web site up and running in no time..
subscribe
Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive Open a directory on USB Drive
Open a directory on USB Drive
Open a directory on USB Drive
 
Open a directory on USB Drive
Open a directory on USB Drive
 
-->