我发现很多VB6的例子和一些C#的例子,但在VB.NET中没有具体的解决方案。简而言之,我需要用尽可能少的代码行来获取下一个可用的驱动器号。任何人都有一个好榜样?VB.NET获取下一个可用的驱动器号
0
A
回答
1
尝试是这样的:
Public Function FindNextAvailableDriveLetter() As String
' build a string collection representing the alphabet
Dim alphabet As New StringCollection()
Dim lowerBound As Integer = Convert.ToInt16("a"C)
Dim upperBound As Integer = Convert.ToInt16("z"C)
For i As Integer = lowerBound To upperBound - 1
Dim driveLetter As Char = ChrW(i)
alphabet.Add(driveLetter.ToString())
Next
' get all current drives
Dim drives As DriveInfo() = DriveInfo.GetDrives()
For Each drive As DriveInfo In drives
alphabet.Remove(drive.Name.Substring(0, 1).ToLower())
Next
If alphabet.Count > 0 Then
Return alphabet(0)
Else
Throw New ApplicationException("No drives available.")
End If
End Function
来源:CodeKeep
+0
没有理由将'Throw'的参数放在括号内。 –
+0
谢谢,我会试试这个。问题:转换函数中的“C”是什么?我在不同的字符串函数中看到了很多。 –
+0
我相信这是告诉转换函数将“a”视为单个字符而不是字符串。 – NickHeidke
0
如果你有C#代码,然后把它通过developerfusion coverter - 这应该让你接近(虽然你可能有调整它)。
1
要列出逻辑驱动器试试这个....
包括完整的代码....
Imports System.Management
Public Class Form1
Dim WithEvents w As ManagementEventWatcher
Dim q As WqlEventQuery
Delegate Sub LoadList()
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
w.Stop()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
q = New WqlEventQuery
q.QueryString = "SELECT * FROM" & _
" __InstanceCreationEvent WITHIN 1 " & _
"WHERE TargetInstance isa ""Win32_LogicalDisk"""
w = New ManagementEventWatcher(q)
w.Start()
Catch ex As Exception
Trace.WriteLine(ex.ToString)
End Try
LoadDriveList()
End Sub
Private Sub LoadDriveList()
ListBox1.Items.Clear()
Dim moReturn As Management.ManagementObjectCollection
Dim moSearch As Management.ManagementObjectSearcher
Dim mo As Management.ManagementObject
moSearch = New Management.ManagementObjectSearcher("Select * from Win32_LogicalDisk")
moReturn = moSearch.Get
For Each mo In moReturn
ListBox1.Items.Add(mo("Name").ToString)
Next
End Sub
Private Sub w_EventArrived(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs) Handles w.EventArrived
ListBox1.Invoke(New LoadList(AddressOf LoadDriveList))
End Sub
End Class
相关问题
- 1. 下一个可用的驱动器号后C:驱动器
- 2. 在VB.NET中获取CD驱动器号
- 3. 获取硬盘的驱动器号
- 4. 如何获取pendrive的驱动器号
- 5. 从驱动器盘符获取驱动器型号
- 6. Ruby获取可用磁盘驱动器
- 7. 获取免费驱动器号
- 8. 如何从Windows 7的驱动器号中获取可移动设备的物理驱动器号?
- 9. 用vb.net搜索驱动器
- 10. 列出可用驱动器中的总可用空间VB.net
- 11. 从特定的可用号码范围获取下一个可用号码
- 12. 获取映射驱动器的UNC路径VB.net
- 13. 在C#中使用SQL获取数据库的驱动器号
- 14. 如何获取驱动器标签和驱动器序列号QB64
- 15. 在Java中获取驱动器名称(而不是驱动器号)
- 16. 获取具有一定文件大小的驱动器中的文件VB.NET
- 17. 获取逻辑驱动器
- 18. 使用Powershell获取硬盘驱动器序列号
- 19. 如何从另一个驱动器获取文件下载的绝对路径?
- 20. 获取包括共享RDP驱动器的驱动器列表
- 21. 禁用使用光盘驱动器(VB.NET)
- 22. 下一个可用的项目DDL VB.NET
- 23. 可以通过php读取符号链接到另一个驱动器?
- 24. 通过网络获取安装的iso的驱动器号
- 25. 从模拟后的映射驱动器号获取UNC路径
- 26. 如何获取驱动器号在Powershell 2.0中的列表
- 27. 从C#中的设备句柄获取驱动器号
- 28. 如何获取USB设备的驱动器号?
- 29. 获取带有JavaScript的可移动驱动器列表?
- 30. 无法使用VB.net映射驱动器
一般规则:学习C#。任何有能力的.NET程序员都应该理解C#和.NET,更好的是能够胜任至少一个。然后,您将能够理解C#代码示例并将其毫无困难地转换为VB。 –
这里有很多转换器。尝试http://converter.telerik.com/他们通常做95%的工作(有时更多);你通常还得稍微调整一下结果。 –