SysInfo_DeviceArrivalイベントを使用して、USBドライブの挿入を検出します。 SysInfo_DeviceRemoveCompleteが削除されたときに起動します。
SysInfoコントロールには多くのイベントが存在するため、どのようなイベントが発生するかを確認するためのテストプログラムを作成しました。これまで私が使用していなかったコントロールを使って作業をしています。 SysInfoControlを実行するプログラムは以下のとおりです。
VB6コード編集ウィンドウの上部にあるドロップダウンリストを使用してこれを行いました。左側のSysInfoコントロールを選択し、右側に表示されている各イベントを選択します。それぞれにDebug.Printステートメントを追加し、プロジェクトを実行して、USBデバイスを接続します。
また、フォームデザイナでSysInfoコントロールを選択し、F1キーを押すと、すべてのイベントの説明とそのパラメータの解釈方法を含むMSDNライブラリヘルプが表示されます。少なくとも、それは私のマシン上で行います。 (私は人々がそれを言うとき、それは嫌いですが、MSDNのドキュメントを別々にインストールする必要があるため、ここに当てはまります)
これでうまくいかない場合は、hereというドキュメントが見つかりました。
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
これはトリックを行うようだ。助けてくれてありがとう – sparkdino