求。禁用,启用声卡AU3源码
本帖最后由 49666684 于 2012-2-21 19:22 编辑如题。
现在能用批处理。实现。但想知道AU3能实现否。!@echo off
COLOR 1f
title禁用声卡程序
cls
echo 本程序会禁用声卡,请确认按任意键继续...
@pause
devcon disable HDAUDIO\*
exit7楼非常强悍。。
不过美中不足就是还需要手动来查看声卡名称!
如果能自动获取到就更好了。
不过还是非常感谢
问题已解决。问题 找不到怎么改成已解决啊。。。。。这可不是我不改。。。。。 找了一篇Devcon的用法,不知能否帮上你。
#列出所有PCI设备的ID
Devcon find pci\*
如:
PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&172A2BDD&0&18F0: Realtek RTL8139
Family PCI Fast Ethernet NIC
其中 : 号前面的 PCI\VEN_10EC 就是设备 ID 号。后面的是设备名称。ID 号也可以用 *DEV_8139* 来表示。
#开启设备命令:
Devcon enable PCI\VEN_10EC
或者写成
Devcon enable *DEV_8139*
#禁用设备命令:
Devcon disable PCI\VEN_10EC
或者写在成
Devcon disable *DEV_8139*
禁用设备的命令是:
devcon disable 设备ID
这个设备ID怎么得到呢?可以通过设备管理器,在设备上点击“属性”,在“详细信息”标签里面有个下拉列表,选择“设备范例Id”,下面显示出来的就是设备ID,直接CTRL+C就OK了。
2、设备ID不能直接输入,否则会把ID开头相同的一大堆设备都操作一遍,最后还会出几个错误提示;加上双引号也不行,会提示没有设备被禁用/启用;必须这样写:@"设备ID",所以最后的命令格式是:
devcon disable @"设备ID"
如:
devcon disable @"PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&172A2BDD&0&18F0"
各设备分类(class)标准 列表
00 Use class information in the Interface Descriptors
01 Audio
02 Communications and CDC Control
03 HID (Human Interface Device)
05 Physical
06 Image
07 Printer
08 Mass Storage
09 Hub
0A CDC-Data
0B Smart Card
0D Content Security
0E Video
0F Personal Healthcare
DC Diagnostic Device
E0 Wireless Controller
EF Miscellaneous
FE Application Specific
FF Vendor Specific
关闭类设备:
devcon.exe disable USB\Class_08
禁用U盘,即删除U盘,不管你有N个U盘统统一起删除
devcon.exe disable USB\Class_06
禁用数码相机,包括数码相机附带的可移动磁盘
devcon.exe disable USB\Class_03
禁用USB鼠标&键盘
devcon.exe disable USB\Class_ff 这个是DOS下用的吧 我是要看看AU3不调用DOS命令是否能够实现 devcon.exe这个win7里没找到 Devcon提取硬件ID有点繁琐,直接用Everest检测导出声卡项,然后在里面提取硬件ID。就像GHOST系统里面智能安装驱动一样 本帖最后由 lixiaolong 于 2012-2-19 14:13 编辑
支持Win7 32位,64位没有测试.
#include <SetupApi.au3>
$Sound_Name = "Conexant SmartAudio HD"; 请在设备管理器中查看自己的设备名称.
Local $hDevs, $tDevInfo, $tDevInfo, $aSound = []
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "media")
While _SetupDiEnumDeviceInfo($hDevs, $aSound, $tDevInfo)
$sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
$aSound[$aSound] = $sDescr
$aSound[$aSound] = _SetupDiGetDeviceInstanceID($hDevs, $tDevInfo)
If $aSound[$aSound] == $Sound_Name Then
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, True) ; 禁用
If $fResult = True Then
MsgBox(0, "", "声卡禁用成功。")
Else
MsgBox(0, "", "错误码:" & @error)
EndIf
$fResult = _SetupDiDisableDevice($hDevs, $tDevInfo, False) ; 启用
ExitLoop
EndIf
WEnd
(参考pusofalse版主的帖子) 代码收下...... 回复 7# lixiaolong
牛人啊!你太厉害 回复 7# lixiaolong
支持,很不错。 谢谢共享,支持楼主 支持Win7 32位,64位没有测试.
()
lixiaolong 发表于 2012-2-19 14:12 http://www.autoitx.com/images/common/back.gif
非常不错。。
不过美中不足就是还需要手动来查看声卡名称!
如果能自动获取到就更好了。
不过还是非常感谢 回复 12# 49666684
WMI因该可以的,奈何测试失败
_MediaDrivername()
Func _MediaDrivername()
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $colItems = ""
Local $strComputer = "localhost"
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PnPSignedDriver", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
For $objItem In $colItems
If $objItem.DeviceClass = "MEDIA"And $objItem.CompatID<>"" Then
MsgBox(1,"设备名称为" ,$objItem.DeviceName )
EndIf
Next
EndFunc .....楼。。确实失败了。。。。囧 给你的只是得到设备名称的码,如果要禁用启用的话我理解要用startservice()和stopservice()
奈何。。
页:
[1]
2