Используйте событие SysInfo_DeviceArrival , чтобы обнаружить вставку USB-накопителя. SysInfo_DeviceRemoveComplete срабатывает при его удалении.
Существует множество событий для элемента управления SysInfo, поэтому я написал тестовую программу, чтобы увидеть, какие события происходят.Я делаю это часто, когда работаю с элементом управления, который раньше не использовал.Программа, которая выполняет SysInfoControl, включена ниже.
Я сделал это с помощью раскрывающихся списков в верхней части окна редактирования кода VB6: выберите слева элемент управления SysInfo, выберите каждое из отображаемых событийв правильном.Добавьте к каждому из них оператор Debug.Print, запустите проект и подключите свое USB-устройство.
Кроме того, если вы выбрали элемент управления SysInfo в конструкторе форм, а затем нажмите клавишу F1, справка библиотеки MSDN должна отобразить, какиевключает в себя описания всех событий и как интерпретировать их параметры.По крайней мере, так на моей машине.(Я ненавижу, когда люди говорят это, но это применимо здесь, потому что документы MSDN должны быть установлены отдельно.)
Если это не работает, я нашел документы онлайн здесь .
Option Explicit
Private Sub SysInfo_ConfigChangeCancelled()
Debug.Print Now() & ": " & "SysInfo_ConfigChangeCancelled"
End Sub
Private Sub SysInfo_ConfigChanged(ByVal OldConfigNum As Long, ByVal NewConfigNum As Long)
Debug.Print Now() & ": " & "SysInfo_ConfigChanged"
End Sub
Private Sub SysInfo_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
Debug.Print Now() & ": " & "SysInfo_DeviceArrival"
End Sub
Private Sub SysInfo_DeviceOtherEvent(ByVal DeviceType As Long, ByVal EventName As String, ByVal DataPointer As Long)
Debug.Print Now() & ": " & "SysInfo_DeviceOtherEvent"
End Sub
Private Sub SysInfo_DeviceQueryRemove(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long, Cancel As Boolean)
Debug.Print Now() & ": " & "SysInfo_DeviceQueryRemove"
End Sub
Private Sub SysInfo_DeviceQueryRemoveFailed(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
Debug.Print Now() & ": " & "SysInfo_DeviceQueryRemoveFailed"
End Sub
Private Sub SysInfo_DeviceRemoveComplete(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
Debug.Print Now() & ": " & "SysInfo_DeviceRemoveComplete"
End Sub
Private Sub SysInfo_DeviceRemovePending(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
Debug.Print Now() & ": " & "SysInfo_DeviceRemovePending"
End Sub
Private Sub SysInfo_DevModeChanged()
Debug.Print Now() & ": " & "SysInfo_DevModeChanged"
End Sub
Private Sub SysInfo_DisplayChanged()
Debug.Print Now() & ": " & "SysInfo_DisplayChanged"
End Sub
Private Sub SysInfo_PowerQuerySuspend(Cancel As Boolean)
Debug.Print Now() & ": " & "SysInfo_PowerQuerySuspend"
End Sub
Private Sub SysInfo_PowerResume()
Debug.Print Now() & ": " & "SysInfo_PowerResume"
End Sub
Private Sub SysInfo_PowerStatusChanged()
Debug.Print Now() & ": " & "SysInfo_PowerStatusChanged"
End Sub
Private Sub SysInfo_PowerSuspend()
Debug.Print Now() & ": " & "SysInfo_PowerSuspend"
End Sub
Private Sub SysInfo_QueryChangeConfig(Cancel As Boolean)
Debug.Print Now() & ": " & "SysInfo_QueryChangeConfig"
End Sub
Private Sub SysInfo_SettingChanged(ByVal Item As Integer)
Debug.Print Now() & ": " & "SysInfo_SettingChanged"
End Sub
Private Sub SysInfo_SysColorsChanged()
Debug.Print Now() & ": " & "SysInfo_SysColorsChanged"
End Sub
Private Sub SysInfo_TimeChanged()
Debug.Print Now() & ": " & "SysInfo_TimeChanged"
End Sub