2011-01-19 70 views
1

フォームにSysInfoコントロールを追加しました。テストするために、USBカードリーダーが接続されているか、 。VB6でSysInfoコントロールを使用してUSBデバイスのプラグ/プラグが外されたことを検出する

Private Sub SysInfo1_ConfigChanged(ByVal OldConfigNum As Long, ByVal NewConfigNum As Long) 

    ShowText "The system configuration has changed" 

End Sub 

私はDisplayChangedイベントと同様のテストメッセージを試してみましたが、成功したというメッセージが表示されるモニターの解像度が変更されたとき、私は私の人生のために上記の作業を取得することはできませんしています。私は、USBデバイスの追加/削除時にConfigChangedイベントが発生するという印象を受けました。私はアプリケーションとSysInfo.ocxを含め、Vistaマシンでテストしています。ありがとう

答えて

1

なぜ特別なコントロールを出荷しますか? Karl PetersonのSysInfoの例を見てみることをお勧めします。http://vb.mvps.org/samples/SysInfo/ CSysInfoDeviceクラスはデバイスイベントを監視します。

+0

これはトリックを行うようだ。助けてくれてありがとう – sparkdino

2

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 
+0

申し訳ありませんが、私は少しはっきりしていたはずです。 SysInfo_DeviceArrival、SysInfo_DeviceRemoveComplete、SysInfo_ConfigChangedは、Windowsが認識しているにもかかわらず、USBデバイスが削除されたり、コンピュータに追加されたりすると起動します。私はSysInfo_DisplayChangedを起動して、モニターの解像度を変更することで起動できますが、USBデバイスの取り外し/挿入からの応答を引き出すことはできません。ドキュメントは、関連するイベントのリストを超えて、特にデバイスの前面に照らしていません。 – sparkdino

関連する問題