2011-01-19 2 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

관련 문제