oKt*_*iTe 1 webcam windows-7 zenbook
我经常将笔记本电脑用作台式机,大约有 75% 的时间。作为桌面设置,它具有外部连接的显示器、扬声器、键盘、鼠标和网络摄像头——后三个通过 USB 连接。
然后将其定位为使其集成的网络摄像头无法用于面部识别和视频聊天,但我使用的某些程序不提供任何选择默认网络摄像头的方法。
所以我想知道是否有任何方法可以通过实用程序、脚本或其他方式在连接外部网络摄像头时自动禁用内置网络摄像头。
(如果有帮助,我在 Asus Zenbook Prime UX32VD 上使用 Windows 7。)
提议的解决方案使用批处理脚本和任务调度技术来处理所有这些。在我们真正跳到多汁的部分之前,我们需要做一些事情。
DevCon是一个命令行工具,可显示有关设备的详细信息,并允许您从命令行搜索和操作设备。DevCon 启用、禁用、安装、配置和删除本地计算机上的设备,并显示有关本地和远程计算机上设备的详细信息。
.cab根据操作系统下载相应的软件包:
打开.cab存档并提取名为fil[some letters and numbers]. 它应该是大约 80 KB。
devcon.exe.注意为了启用/禁用任何设备,devcon.exe必须以管理员权限运行。
Windows 通过使用一组特殊的标识符来标识设备及其所属的安装程序类。这些标识符用于将硬件设备与允许它们与 Windows 通信的设备驱动程序进行匹配。
一个或多个设备 ID 由其制造商分配给设备。其中之一,硬件 ID,非常具体 - 取决于设备的品牌、型号,甚至固件版本。其他设备 ID 也被分配,并且更通用,这些 ID 可能被分配给制造商提供的其他设备,这些设备在某种程度上是兼容的。
devmgmt.msc)。将以下代码另存为WebcamCheck.cmd:
@回声关闭
REM 确保至少有 2 个参数
如果 "%~2" == "" 退出 /b 2
REM 验证 devcon.exe 没有丢失
cd /d "%~dp0"
如果不存在 devcon.exe exit /b 3
如果未指定,REM 将间隔设置为 15 秒
if "%~3" == "" (set interval=15) else (set interval=%3)
:轮询
for /f "tokens=1 delims=\" %%G in ("%~2") do (devcon.exe find *%%G* | findstr /i /c:"%~2" >nul)
转到:检查%errorlevel%
:check0
devcon.exe 状态 "%~1" | findstr /i /c:"disabled" >nul
if %errorlevel% == 1 (devcon.exe 禁用 "%~1")
:等待
超时 /t %interval% /nobreak >nul
转到:投票
:检查1
devcon.exe 状态 "%~1" | findstr /i /c:"disabled" >nul
如果 %errorlevel% == 0 (devcon.exe 启用 "%~1")
转到:等待
复制devcon.exe文件并粘贴到与您刚刚保存的文件相同的目录中。
该脚本采用三个参数:第一个是目标设备 ID(内置网络摄像头);第二个是触发设备ID(外部网络摄像头);第三个是轮询间隔(以秒为单位),它是可选的。
首先,脚本将确保有足够的参数,并且devcon.exe不会丢失。
当未指定轮询间隔时,将改为使用默认值(15 秒)。该值用于确定每次设备检查之间应经过的秒数。降低该值意味着检测速度更快,这反过来意味着更多的系统开销。在尝试不同的值之前,先用默认值进行测试,看看效果如何。无论哪种方式,我都不建议低于 10 秒。
批处理脚本需要使用以下格式的通用设备 ID:
XXX\VID_YYYY&PID_ZZZZ
Run Code Online (Sandbox Code Playgroud)
XXX是设备类(例如 USB、PCI 等);YYYY是供应商 ID,分配给硬件制造商的唯一值;ZZZZ 是产品 ID,用于标识设备型号。
例如,如果您有这样的设备 ID:
USB\VID_1D4D&PID_1002&REV_0039&MI_00
Run Code Online (Sandbox Code Playgroud)
通用 ID 将是:
USB\VID_1D4D&PID_1002
Run Code Online (Sandbox Code Playgroud)
检查触发设备(外部网络摄像头)是否已连接后,脚本将禁用或启用目标设备(内置网络摄像头),除非它已被禁用/启用。
我们现在唯一需要的是让批处理脚本在登录时自动启动。
taskschd.msc) 并单击操作 > 创建任务。WebcamCheck。system在文本框中键入,单击Check Names,然后单击OK。"X:\Path\to\WebcamCheck.cmd"在Program/script文本框中键入,将其替换为实际文件路径。"XXX\VID_YYYY&PID_ZZZZ" "AAA\VID_BBBB&PID_CCCC"在添加参数文本框中键入,用正确的值替换设备 ID。注意如果您希望尽快禁用内置网络摄像头,请在登录前连接外置摄像头。
这是批处理脚本的简化版本,仅在启动然后退出时才会检查外部摄像头:
@echo off
REM ensure there at least 2 parameters
if "%~2" == "" exit /b 2
REM verify devcon.exe is not missing
cd /d "%~dp0"
if not exist devcon.exe exit /b 3
:check
for /f "tokens=1 delims=\" %%G in ("%~2") do (devcon.exe find *%%G* | findstr /i /c:"%~2" >nul)
goto :check%errorlevel%
:check0
devcon.exe status "%~1" | findstr /i /c:"disabled" >nul
if %errorlevel% == 1 (devcon.exe disable "%~1")
exit /b
:check1
devcon.exe status "%~1" | findstr /i /c:"disabled" >nul
if %errorlevel% == 0 (devcon.exe enable "%~1")
exit /b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9008 次 |
| 最近记录: |