- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
DirectShow 是否有一种简单的方法来检测网络摄像头是否已插入 (USB),或者是否有人拔掉了它(然后轮询或搜索它)?
我看过 Microsoft Media Foundation 的代码,但它很复杂,而且 Media Foundation 不能安装在 < Vista 上,afaik。
谢谢,WW
最佳答案
我使用 WMI 事件观察器在属性字符串中查找 PID(某些相机可能会触发事件两次,具体取决于驱动程序)。这是一个 VB.Net 示例:
Dim CamEventWatcher As ManagementEventWatcher
Public Delegate Sub SetMessageCallback(ByVal [_Msg] As Boolean)
Private Sub MessageCallback(ByVal _Msg As Boolean)
If (_Msg) Then
'cam connected
Else
'camera removed
End If
End Sub
Private Sub RemoveCameraUSBHandler()
Try
If Not CamEventWatcher Is Nothing Then
CamEventWatcher.Stop()
End If
Catch ex As Exception
End Try
End Sub
Private Sub AddCameraUSBHandler()
Dim q As WqlEventQuery
Dim scope As ManagementScope = New ManagementScope("root\CIMV2")
scope.Options.EnablePrivileges = True
Try
q = New WqlEventQuery()
q.EventClassName = "__InstanceOperationEvent"
q.WithinInterval = New TimeSpan(0, 0, 1)
q.Condition = "TargetInstance ISA 'Win32_USBControllerdevice'"
CamEventWatcher = New ManagementEventWatcher(scope, q)
AddHandler CamEventWatcher.EventArrived, AddressOf CamUSBEvent
CamEventWatcher.Start()
Catch ex As Exception
End Try
End Sub
Private iCreatedFired As Integer = 0
Private iRemovedFired As Integer = 0
Public Sub CamUSBEvent(ByVal sender As System.Object, ByVal e As EventArrivedEventArgs)
If e.NewEvent.ClassPath.ClassName = "__InstanceCreationEvent" Then
Dim sAntecedent As String
Dim sDependent As String
sAntecedent = e.NewEvent.Properties("TargetInstance").Value.Properties("Antecedent").Value.ToString() + ControlChars.CrLf
sDependent = e.NewEvent.Properties("TargetInstance").Value.Properties("Dependent").Value.ToString() + ControlChars.CrLf
If sDependent.Contains(CAM_DEV_ID) Then
iCreatedFired += 1
If (iCreatedFired = 1) Then
e.NewEvent.Dispose()
Return
End If
iCreatedFired = 0
iRemovedFired = 0
Dim _delegate As New SetMessageCallback(AddressOf MessageCallback)
Me.Invoke(_delegate, New Object() {True})
End If
ElseIf e.NewEvent.ClassPath.ClassName = "__InstanceDeletionEvent" Then
Dim sAntecedent As String
Dim sDependent As String
sAntecedent = e.NewEvent.Properties("TargetInstance").Value.Properties("Antecedent").Value.ToString() + ControlChars.CrLf
sDependent = e.NewEvent.Properties("TargetInstance").Value.Properties("Dependent").Value.ToString() + ControlChars.CrLf
If sDependent.Contains(CAM_DEV_ID) Then
iRemovedFired += 1
If (iRemovedFired = 1) Then
e.NewEvent.Dispose()
Return
End If
iCreatedFired = 0
iRemovedFired = 0
Dim _delegate As New SetMessageCallback(AddressOf MessageCallback)
Me.Invoke(_delegate, New Object() {False})
End If
End If
e.NewEvent.Dispose()
End Sub
关于directshow - 如何检测网络摄像头插入/拔出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12601779/
如何使用Delphi检查麦克风是否插入/拔出? 最佳答案 function WaveInDevicePresent: boolean; begin result := waveInGetNumDe
DirectShow 是否有一种简单的方法来检测网络摄像头是否已插入 (USB),或者是否有人拔掉了它(然后轮询或搜索它)? 我看过 Microsoft Media Foundation 的代码,但它
我有一个与我的 linux 盒子配对的蓝牙 Remote ,当激活时,这个 Remote 在 /dev/input/event13 可见。 我有一个小的 C 程序,可以打开这个设备并直接从中读取,运行
我正在使用官方 Kinect SDK 1.5 示例之一,我正在尝试了解如何添加检查以检测 Kinect 何时断开连接。目前,该应用程序只会卡住,因此必须有一种方法来防止这种情况发生。 这是来自 SDK
我需要检测嵌入式系统上的 USB 串行设备何时插入或拔出,并知道 tty 是什么与之相关。 我的系统运行在 2.6 Linux 内核上。 因为我没有 udev 的写入权限规则,现在我试图从文件系统
我是安卓新手。如果插入或拔出充电器,我想更改 Activity 中 TextView 的文本。为此,我已经在 list 中注册了一个带有 Intent 的接收器 android.intent.acti
我正在开发一个在线乐谱阅读训练器,a prototype is available here .我能够实现对以前连接的 MIDI 键盘的访问,但是,我正在努力实现热插拔方案。 我最后一次拍摄是这样的:
我的最终目标是创建一个在启动时运行的脚本,该脚本在插入以太网电缆时关闭 wifi,反之亦然。这是我到目前为止创建的脚本: #!/bin/bash File=/sys/class/net/eth0/ca
我是一名优秀的程序员,十分优秀!