工作需要,我想弄一个U盘插拔检测小程序,听说你以前编写过一个,请问能否把代码提供一份给我?
答案:2 悬赏:30 手机版
解决时间 2021-03-18 03:00
- 提问者网友:流星是天使的眼泪
- 2021-03-17 03:02
工作需要,我想弄一个U盘插拔检测小程序,听说你以前编写过一个,请问能否把代码提供一份给我?
最佳答案
- 五星知识达人网友:忘川信使
- 2021-03-17 03:55
由于没留邮箱,给你关键代码吧,不过,这是我4年前的代码了,我不是计算机专业的,现在看这些代码都觉得那时候真不会写代码,请勿见怪,就算抛砖引玉吧~
Imports System.Management
Public Class jianshi
Dim count As Integer = 0, pan() As String
Dim name1 As String = "", name2 As String = "", volumename1 As String = "", volumename2 As String = "", filesystem1 As String = "", filesystem2 As String = "", size1 As String = "", size2 As String = "", description1 As String = "", description2 As String = "", drivetype1 As String = "", drivetype2 As String = ""
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Call Me.ShowDriveType()
End Sub
Private Sub ShowDriveType()
Dim count2 As Integer = 0, h As Integer = 1, temp As String = ""
Dim disk As ManagementBaseObject
Dim strResult As String = "", ok As String = ""
Dim diskClass = New ManagementClass("Win32_LogicalDisk")
Dim disks As ManagementObjectCollection
disks = diskClass.GetInstances()
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
count2 += 1 '检测有多少个可移动磁盘
End If
Next
If count <> count2 Then
'储存磁盘的盘符
If count2 > count Then '插入U盘
ReDim Preserve pan(count2)
For Each disk In disks
ok = ""
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
For i = 1 To UBound(pan)
If pan(i) = disk("name") Then ok = "yes"
If pan(i) <> disk("name") And ok = "" And i = UBound(pan) Then
ReDim Preserve pan(UBound(pan) + 1)
pan(UBound(pan)) = disk("name")
name1 = disk("name").ToString : volumename1 = disk("volumename").ToString : filesystem1 = disk("filesystem").ToString : size1 = disk("size").ToString : description1 = disk("description").ToString : drivetype1 = disk("drivetype").ToString
If name1 <> name2 OrElse volumename1 <> volumename2 OrElse filesystem1 <> filesystem2 OrElse size1 <> size2 OrElse description1 <> description2 OrElse drivetype1 <> drivetype2 Then
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "插入过USB设备" & vbCrLf & "驱动盘符:" & name1 & vbCrLf & "卷标:" & IIf(volumename1 = "", "可移动磁盘", volumename1) & vbCrLf & "磁盘文件类型:" & filesystem1 & vbCrLf & "磁盘大小:" & Int(Convert.ToInt64(size1) / 1000000) & "Mb" & vbCrLf & "描述:" & description1 & vbCrLf & "磁盘类型:" & drivetype1
name2 = name1 : volumename2 = volumename1 : filesystem2 = filesystem1 : size2 = size1 : description2 = description1 : drivetype2 = drivetype1
End If
End If
Next
End If
Next
Else '拔除U盘
If count2 = 0 Then
For i = 1 To UBound(pan)
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "拔除" & pan(i) & "盘"
Next
ReDim pan(0)
Else
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
For i = 1 To UBound(pan)
If pan(i) = disk("name") Then pan(i) = ""
Next
End If
Next
For i = 1 To UBound(pan)
If pan(i) <> "" Then
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "拔除" & pan(i) & "盘"
End If
Next
ReDim pan(0)
'恢复pan数组
ReDim pan(count2)
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
pan(h) = disk("name")
h += 1
End If
Next
ReDim Preserve pan(count2)
End If
End If
Call main.fresh(temp)
End If
count = count2
End Sub
End Class
Imports System.Management
Public Class jianshi
Dim count As Integer = 0, pan() As String
Dim name1 As String = "", name2 As String = "", volumename1 As String = "", volumename2 As String = "", filesystem1 As String = "", filesystem2 As String = "", size1 As String = "", size2 As String = "", description1 As String = "", description2 As String = "", drivetype1 As String = "", drivetype2 As String = ""
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Call Me.ShowDriveType()
End Sub
Private Sub ShowDriveType()
Dim count2 As Integer = 0, h As Integer = 1, temp As String = ""
Dim disk As ManagementBaseObject
Dim strResult As String = "", ok As String = ""
Dim diskClass = New ManagementClass("Win32_LogicalDisk")
Dim disks As ManagementObjectCollection
disks = diskClass.GetInstances()
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
count2 += 1 '检测有多少个可移动磁盘
End If
Next
If count <> count2 Then
'储存磁盘的盘符
If count2 > count Then '插入U盘
ReDim Preserve pan(count2)
For Each disk In disks
ok = ""
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
For i = 1 To UBound(pan)
If pan(i) = disk("name") Then ok = "yes"
If pan(i) <> disk("name") And ok = "" And i = UBound(pan) Then
ReDim Preserve pan(UBound(pan) + 1)
pan(UBound(pan)) = disk("name")
name1 = disk("name").ToString : volumename1 = disk("volumename").ToString : filesystem1 = disk("filesystem").ToString : size1 = disk("size").ToString : description1 = disk("description").ToString : drivetype1 = disk("drivetype").ToString
If name1 <> name2 OrElse volumename1 <> volumename2 OrElse filesystem1 <> filesystem2 OrElse size1 <> size2 OrElse description1 <> description2 OrElse drivetype1 <> drivetype2 Then
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "插入过USB设备" & vbCrLf & "驱动盘符:" & name1 & vbCrLf & "卷标:" & IIf(volumename1 = "", "可移动磁盘", volumename1) & vbCrLf & "磁盘文件类型:" & filesystem1 & vbCrLf & "磁盘大小:" & Int(Convert.ToInt64(size1) / 1000000) & "Mb" & vbCrLf & "描述:" & description1 & vbCrLf & "磁盘类型:" & drivetype1
name2 = name1 : volumename2 = volumename1 : filesystem2 = filesystem1 : size2 = size1 : description2 = description1 : drivetype2 = drivetype1
End If
End If
Next
End If
Next
Else '拔除U盘
If count2 = 0 Then
For i = 1 To UBound(pan)
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "拔除" & pan(i) & "盘"
Next
ReDim pan(0)
Else
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
For i = 1 To UBound(pan)
If pan(i) = disk("name") Then pan(i) = ""
Next
End If
Next
For i = 1 To UBound(pan)
If pan(i) <> "" Then
temp = temp & vbCrLf & vbCrLf & "在" & System.DateTime.Now & "拔除" & pan(i) & "盘"
End If
Next
ReDim pan(0)
'恢复pan数组
ReDim pan(count2)
For Each disk In disks
If System.Convert.ToInt16(disk("DriveType").ToString()) = 2 Then
pan(h) = disk("name")
h += 1
End If
Next
ReDim Preserve pan(count2)
End If
End If
Call main.fresh(temp)
End If
count = count2
End Sub
End Class
全部回答
- 1楼网友:摆渡翁
- 2021-03-17 05:17
你好!
在这里等到答案估计很难,建议你到用你需要的开发语言的论坛上求助,可能有效果
打字不易,采纳哦!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯