Xojo Conferences

Platforms to show: All Mac Windows Linux Cross-Platform

/Win/USB Stick to Drive Letter
Required plugins for this example: MBS Win Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Win/USB Stick to Drive Letter
This example is the version from Sun, 24th Jan 2015.
Project "USB Stick to Drive Letter.rbp"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
EventHandler Sub Open() // must be done before first window opens! call WindowsWMIMBS.InitSecurity(false) End EventHandler
End Class
Class Window1 Inherits Window
Control Listbox1 Inherits Listbox
ControlInstance Listbox1 Inherits Listbox
End Control
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action() listbox1.DeleteAllRows if not TargetWin32 then MsgBox "This example is for Windows only." Return end if dim w1 as new WindowsWMIMBS dim w2 as new WindowsWMIMBS dim w3 as new WindowsWMIMBS // connect three objects, so we can query in parallel if not w1.ConnectServer("root\cimv2") or not w2.ConnectServer("root\cimv2") or not w3.ConnectServer("root\cimv2") then MsgBox "ConnectServer: fail"+EndOfLine+"Lasterror: "+str(w1.Lasterror) Return end if // look for USB Devices dim query1 as string = "select * from Win32_DiskDrive where InterfaceType='USB'" System.DebugLog query1 if not w1.query("WQL", query1) then System.DebugLog str(w1.Lasterror)+" "+hex(w1.Lasterror)+": "+w1.LasterrorMessage MsgBox "query: fail"+EndOfLine+"Lasterror: "+str(w1.Lasterror) Return end if dim Volumes() as string // loop over USB devices while w1.NextItem dim DeviceID as string = w1.GetProperty("DeviceID") dim Description as string = w1.GetProperty("Description") dim PNPDeviceID as string = w1.GetProperty("PNPDeviceID") dim SerialNumber as string = w1.GetProperty("SerialNumber") dim Size as string = w1.GetProperty("Size") dim Status as string = w1.GetProperty("Status") Listbox1.AddRow "DeviceID", DeviceID Listbox1.AddRow "Description", Description Listbox1.AddRow "PNPDeviceID", PNPDeviceID Listbox1.AddRow "SerialNumber", SerialNumber Listbox1.AddRow "Size", Size Listbox1.AddRow "Status", Status // look for Disks dim query2 as string = "Associators of {Win32_DiskDrive.DeviceID='"+DeviceID+"'} where AssocClass=Win32_DiskDriveToDiskPartition" System.DebugLog query2 if not w2.query("WQL", query2) then System.DebugLog str(w2.Lasterror)+" "+hex(w2.Lasterror)+": "+w2.LasterrorMessage MsgBox "query: fail"+EndOfLine+"Lasterror: "+str(w2.Lasterror) Return end if while w2.NextItem dim DiskDeviceID as string = w2.GetProperty("DeviceID") dim DiskSize as string = w2.GetProperty("Size") Listbox1.AddRow "DiskDeviceID", DiskDeviceID Listbox1.AddRow "DiskSize", DiskSize // look for logical volumes dim query3 as string = "Associators of {Win32_DiskPartition.DeviceID='"+DiskDeviceID+"'} where AssocClass=Win32_LogicalDiskToPartition" System.DebugLog query3 if not w3.query("WQL", query3) then System.DebugLog str(w3.Lasterror)+" "+hex(w3.Lasterror)+": "+w3.LasterrorMessage MsgBox "query: fail"+EndOfLine+"Lasterror: "+str(w3.Lasterror) Return end if while w3.NextItem dim VolumeDeviceID as string = w3.GetProperty("DeviceID") dim VolumeDescription as string = w3.GetProperty("Description") dim VolumeName as string = w3.GetProperty("VolumeName") dim VolumeSize as string = w3.GetProperty("Size") dim FileSystem as string = w3.GetProperty("FileSystem") dim FreeSpace as string = w3.GetProperty("FreeSpace") Listbox1.AddRow "VolumeDeviceID", VolumeDeviceID Listbox1.AddRow "VolumeDescription", VolumeDescription Listbox1.AddRow "VolumeName", VolumeName Listbox1.AddRow "VolumeSize", VolumeSize Listbox1.AddRow "FileSystem", FileSystem Listbox1.AddRow "FreeSpace", FreeSpace Volumes.Append VolumeDeviceID wend wend Listbox1.AddRow "" wend listbox1.AddRow "Found volumes:", Join(Volumes, ", ") End EventHandler
End Control
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS Win Plugin.

MBS Xojo Plugins