karlpopper 发表于 2009-11-5 21:19:23

问题求救 如何获得SysListView32中的选项

问题是这样的 我们网吧使用的是INTEL的集成声卡 与其他的声卡不同的是这个声卡的录音设备是叫做 后麦克风 结果问题就出来了 QQ等一系列的软件会自动调整录音设备为 麦克风
现在我要做一个程序来实现自动模拟点击选择为后麦克风
在大部分场合下还是还是很好用的 但是个别机器上在我使用c:\windows\system32\SNDVOL32.EXE /r 调出录音设备界面的时候其中没有选上后麦克风和线路输入 只有选上麦克风
原先是根据BUTTON号来判断的 这样一来也就不能判断了
于是我又写代码来模拟选择上后麦克风和线路输入
windows 是在SysListView32这个控件中有几个复选按钮 我能不能判断到其中的子项是否被选中了
代码如下
#NoTrayIcon
run("c:\windows\system32\SNDVOL32.EXE /r")
WinWaitActive("录音控制","")
$temp=ControlGetText("录音控制","","Static22")
if ($temp<>"后麦克风") then
winclose("录音控制")
endif
run("c:\windows\system32\SNDVOL32.EXE")
WinWaitActive("音量控制","")
send("!PR")
WinWaitActive("属性","混音器")
ControlCommand ("属性","混音器","Button3","check")


       
;如正常只需要以下代码
;run("c:\windows\system32\SNDVOL32.EXE /r")
;WinWaitActive("录音控制","线路输入")
;ControlCommand ("录音控制","线路输入","Button5","check")
;winclose("录音控制")
;sgbox(4096,"调整成功!","已成功调整,请测试")

karlpopper 发表于 2009-11-5 21:22:37

其他方法我试过了 没有探测到写了什么文件也没看到写什么注册表 很诡异!

karlpopper 发表于 2009-11-5 23:06:48

#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=调节声音.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
func change()
run("c:\windows\system32\SNDVOL32.EXE")
WinWaitActive("音量控制","")
send("!PR")
WinWaitActive("属性","混音器")
ControlCommand ("属性","混音器","Button3","check")
EndFunc

func turn()
WinWaitActive("录音控制","线路输入")
ControlCommand ("录音控制","线路输入","Button5","check")
winclose("录音控制")
msgbox(4096,"调整成功!","已成功调整,请测试")
EndFunc


run("c:\windows\system32\SNDVOL32.EXE /r")
        WinWaitActive("录音控制","")
                $temp=ControlGetText("录音控制","","Static22")
                $temp2=ControlGetText("录音控制","","Static13")
                $temp3=ControlGetText("录音控制","","Static4")


if $temp=="后麦克风"AND $temp2=="麦克风"AND $temp3="线路输入" then
        WinWaitActive("录音控制","线路输入")
        ControlCommand ("录音控制","线路输入","Button5","check")
        winclose("录音控制")
        msgbox(4096,"调整成功!","已成功调整,请测试")
EndIf
if $temp==""AND $temp2==""AND $temp3="线路输入" then
                                winclose("录音控制")
                                change()
                                send("{TAB}")
                                send("{DOWN}")
                                send("{DOWN}")
                                send("{SPACE}")
                                send("{DOWN}")
                                send("{SPACE}")
                                ControlCommand ("属性","混音器","Button5","check")
                                turn()
                                winclose("录音控制")
                                exit
EndIf
        if $temp==""AND $temp2==""AND $temp3="麦克风" then
                        winclose("录音控制")
                                change()
                                send("{TAB}")
                                send("{DOWN}")
                                send("{SPACE}")
                                send("{DOWN}")
                                send("{DOWN}")
                                send("{SPACE}")
                                ControlCommand ("属性","混音器","Button5","check")
                                turn()
                                winclose("录音控制")
                                exit
EndIf

if $temp==""AND $temp2==""AND $temp3="立体声混音" then
winclose("录音控制")
change()
                                send("{TAB}")
                                send("{SPACE}")
                                send("{DOWN}")
                                send("{SPACE}")
                                send("{DOWN}")
                                send("{SPACE}")
                                send("{DOWN}")
                                send("{SPACE}")
                                ControlCommand ("属性","混音器","Button5","check")
                                turn()
                                winclose("录音控制")
                                exit
EndIf

karlpopper 发表于 2009-11-5 23:08:04

只好用了个笨办法来实现了 不过还算好用!

remme 发表于 2009-11-5 23:54:48

能自动实现就是好方法,不管笨不笨,呵呵。
页: [1]
查看完整版本: 问题求救 如何获得SysListView32中的选项