TS2 Sound-Injector BETA

  • hi,

    ich wollte immer mal bei TS2 einfache lustige Sounds senden und habe natürlich sofort erfolglos nach guten Programmen gegoogelt. Das ist auch der Grund warum ich dieses Programm hier geschrieben habe.
    Man kann in der GUI Hotkeys mit Soundfiles hinzufügen und löschen und diese dann setzen. Es muss TS2 nicht gestartet sein oder auf dem Rechner man kann auch einfach dann per hotkey sounds abspielen.
    Um aber bei TS2 zu senden habe ich im eng. Forum gesucht und eine nützliche Funktionsammelung gefunden, die ich auch verwende. Jedoch war diese nicht mit der Soundkarte eines Freundes kompatibel und mit eines anderen schon -.- o.O.

    Was fehlt:
    mehrere Presets mit eigener Dateiendung zum laden etc.
    Optimierung und Fehlerabfänge -.-

    Naja hier mal ein Bild:
    [Blockierte Grafik: http://leviathan-design.de/~upload1/ss143240.jpg]

    Als erstes auf View-> Config und Mikrofon und Input einstellen
    Download (ist a weng größer da schon ca. 60 sounds dabei sind):
    Klick

    Source:

    Spoiler anzeigen
    [autoit]


    ;// made by Leviathan

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <MXSelectInputSrc.au3>
    #Include <Misc.au3>
    #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;----------Main-GUI-----------------
    $main_gui = GUICreate("TS2- Soundinjector", 458, 310, 193, 115)
    $list = GUICtrlCreateListView("HotKey | Sound", 0, 0, 345, 257)
    _GUICtrlListViewSetColumnWidth($list, 0, 100)
    _GUICtrlListViewSetColumnWidth($list, 1, 225)
    $add_button = GUICtrlCreateButton("Add", 8, 264, 65, 17, 0)
    $delete_button = GUICtrlCreateButton("Delete",80, 264, 65, 17, 0)
    $edit_button = GUICtrlCreateButton("Activate Hks", 152, 264, 65, 17, 0)
    $refreshbutton = GUICtrlCreateButton("Refresh", 224, 264, 65, 17, 0)
    $sendbutton = GUICtrlCreateButton("Send", 368, 64, 73, 17, 0)
    $testbutton = GUICtrlCreateButton("Test", 368, 88, 73, 17, 0)
    $infolabel = GUICtrlCreateLabel("", 352, 0, 100, 52)
    $ts2key_label = GUICtrlCreateLabel("Key: ", 360, 120, 40, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $activedevice_label = GUICtrlCreateLabel("active device:", 360, 168, 85, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $activedevice = GUICtrlCreateInput("", 352, 184, 105, 21)
    $switch_button = GUICtrlCreateButton("Switch", 376, 208, 65, 17, 0)
    $MenuFile = GUICtrlCreateMenu("File")
    $Menuopenini = GUICtrlCreateMenuItem("Open Ini", $MenuFile)
    $Menuclose = GUICtrlCreateMenuItem("Close", $MenuFile)
    $MenuEdit = GUICtrlCreateMenu("View")
    $Menuconfig = GUICtrlCreateMenuItem("Config", $MenuEdit)
    $Menuquestion = GUICtrlCreateMenu("?")
    $Menuabout = GUICtrlCreateMenuItem("About", $Menuquestion)
    $Menuhelp = GUICtrlCreateMenuItem("Help", $Menuquestion)
    $Menureportbug = GUICtrlCreateMenuItem("Report Bug", $Menuquestion)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ;----------Config-GUI-----------------
    $config_gui = GUICreate("Configuration", 206, 141, 192, 112, -1, $WS_EX_TOOLWINDOW)
    $micro_combo = GUICtrlCreateCombo("", 56, 72, 145, 25)
    $input_combo = GUICtrlCreateCombo("", 56, 96, 145, 25)
    $micro_label = GUICtrlCreateLabel("Microphone", 0, 72, 60, 17)
    $input_label = GUICtrlCreateLabel("Input:", 0, 96, 31, 17)
    $save_button = GUICtrlCreateButton("Save", 64, 120, 89, 17, 0)
    $key_label = GUICtrlCreateLabel("Send Key: ", 16, 8, 168, 17)
    $set_button = GUICtrlCreateButton("Set", 16, 40, 75, 17, 0)
    ;$clear_button = GUICtrlCreateButton("Clear", 104, 40, 75, 17, 0)
    GUISetState(@SW_HIDE)
    ;-------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ;----------Presskey-GUI-----------------
    $presskey_gui = GUICreate("Push-To-Talk Key", 140, 44, 216, 212, -1, $WS_EX_TOOLWINDOW)
    $presskey_label = GUICtrlCreateLabel("Press the key", 24, 8, 98, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_HIDE)
    ;-------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ;----------Hotkey-Setup-GUI-----------------
    $hksetup_gui = GUICreate("Hotkey-Setup", 174, 95, 194, 112, -1, $WS_EX_TOOLWINDOW)
    $hotkeyinput = GUICtrlCreateInput("", 128, 8, 41, 21)
    $hotkeyinput_combo = GUICtrlCreateCombo("STRG+", 0, 8, 121, 25)
    GUICtrlSetData(-1, "STRG+|STRG+SHIFT+|STRG+ALT+|ALT+SHIFT+")
    $ok_button = GUICtrlCreateButton("OK", 0, 72, 81, 17, 0)
    $newsoundfile_input = GUICtrlCreateInput("", 0, 40, 121, 21)
    $browse_button = GUICtrlCreateButton("...", 128, 40, 41, 17, 0)
    $cancel_button = GUICtrlCreateButton("Cancel", 96, 72, 73, 17, 0)
    GUISetState(@SW_HIDE)
    ;-------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _refresh()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg(1)
    If $msg[0] = $GUI_EVENT_CLOSE AND $msg[1] = $main_gui Then Exit
    If $msg[0] = $testbutton AND $msg[1] = $main_gui Then _test()
    If $msg[0] = $refreshbutton AND $msg[1] = $main_gui Then _refresh()
    If $msg[0] = $sendbutton AND $msg[1] = $main_gui Then _send()
    If $msg[0] = $GUI_EVENT_CLOSE AND $msg[1] = $config_gui Then GUISetState(@SW_HIDE, $config_gui)
    If $msg[0] = $Menuclose AND $msg[1] = $main_gui Then Exit
    If $msg[0] = $Menuconfig AND $msg[1] = $main_gui Then
    $gui1 = WinGetPos("TS2- Soundinjector")
    WinMove("Configuration", "", $gui1[0]+$gui1[2]+5, $gui1[1]+5)
    GUISetState(@SW_SHOW, $config_gui)
    EndIf
    If $msg[0] = $set_button AND $msg[1] = $config_gui Then _setkey()
    If $msg[0] = $save_button AND $msg[1] = $config_gui Then _configsave()
    If $msg[0] = $Menuopenini AND $msg[1] = $main_gui Then ShellExecute(@ScriptDir&"\haschs.ini")
    If $msg[0] = $switch_button AND $msg[1] = $main_gui Then _switch()
    If $msg[0] = $add_button AND $msg[1] = $main_gui Then _addasound()
    If $msg[0] = $delete_button AND $msg[1] = $main_gui Then _deleteasound()
    If $msg[0] = $edit_button AND $msg[1] = $main_gui Then _hks()

    [/autoit] [autoit][/autoit] [autoit]

    If $msg[0] = $ok_button AND $msg[1] = $hksetup_gui Then _addsound()
    If $msg[0] = $browse_button AND $msg[1] = $hksetup_gui Then _browse()
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _addsounds()
    $soundkey = IniReadSection(@ScriptDir&"\haschs.ini", "sounds")
    If @Error Then
    Else
    Dim $item1[$soundkey[0][0]+1]
    For $i = 1 To $soundkey[0][0]
    $itemcontent = StringSplit($soundkey[$i][1], "|")
    If IsArray($itemcontent) = 1 Then
    $item1[$i] = GuiCtrlCreateListViewItem($itemcontent[2]&"|"&$itemcontent[1], $list)
    EndIf
    Next
    EndIf
    EndFunc ;==> _addsounds()

    [/autoit] [autoit][/autoit] [autoit]

    Func _editsound()
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    EndFunc ;==> _editsound()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _addsound()
    If $edit = 1 Then
    $hkprefix = GUICtrlRead($hotkeyinput_combo)
    $hkk = GUICtrlRead($hotkeyinput)
    If StringLen($hkk )=1 Then $valid = 1
    $soundfilenew = GUICtrlRead($newsoundfile_input)
    If $soundfilenew = "" Then $valid=0

    [/autoit] [autoit][/autoit] [autoit]

    If $valid = 1 Then
    $hotkeynew = $hkprefix&$hkk
    IniWrite(@ScriptDir&"\haschs.ini", "sounds", "s"&_GUICtrlListViewGetCurSel($list), $soundfilenew&"|"&$hotkeynew)
    Else
    ToolTip("Hotkey has more than 1 char"&@CRlf&"or soundfile isnt in sounds folder!")
    sleep(500)
    ToolTip("")
    EndIf
    _refresh()
    GUISetState(@SW_HIDE, $hksetup_gui)
    Else
    $valid = 0
    $itemcount = _GUICtrlListViewGetItemCount($list)
    ;----------------------------------------------------------------------------------;
    $hkprefix = GUICtrlRead($hotkeyinput_combo)
    $hkk = GUICtrlRead($hotkeyinput)
    If StringLen($hkk )=1 Then $valid = 1
    $soundfilenew = GUICtrlRead($newsoundfile_input)
    If $soundfilenew = "" Then $valid=0

    [/autoit] [autoit][/autoit] [autoit]

    If $valid = 1 Then
    $hotkeynew = $hkprefix&$hkk
    $itemcount = $itemcount+1
    IniWrite(@ScriptDir&"\haschs.ini", "sounds", "s"&$itemcount, $soundfilenew&"|"&$hotkeynew)
    Else
    ToolTip("Hotkey has more than 1 char"&@CRlf&"or soundfile isnt in sounds folder!")
    sleep(500)
    ToolTip("")
    EndIf
    _refresh()
    GUISetState(@SW_HIDE, $hksetup_gui)
    EndIf
    EndFunc ;==> _addsound()

    [/autoit] [autoit][/autoit] [autoit]

    Func _addasound()
    GUISetState(@SW_SHOW, $hksetup_gui)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _deleteasound()
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    If $sound <> "" Then
    _GUICtrlListViewDeleteItem ($list, _GUICtrlListViewGetCurSel($list))
    $count = _GUICtrlListViewGetItemCount ($list)
    ;MsgBox(0,"", $count)
    If $count > 1 Then
    ;----SavingSoundstoarray---
    Dim $listview[$count+1][$count+1]
    For $i = 0 To $count
    $listview[$i][0] = _GUICtrlListViewGetItemText($list, $i, 0)
    $listview[$i][1] = _GUICtrlListViewGetItemText($list, $i, 1)
    Next
    ;-----Iniclearing-------
    $ini = IniReadSection(@ScriptDir&"\haschs.ini", "sounds")
    For $i = 0 To $ini[0][0]
    IniDelete (@ScriptDir&"\haschs.ini", "sounds", "s"&$i)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($listview) = 1 Then
    For $i = 0 To $count
    $sound = $listview[$i][1]
    $key = $listview[$i][0]
    If $sound <> "" AND $key <> "" Then
    IniWrite(@ScriptDir&"\haschs.ini", "sounds", "s"&$i+1, $sound&"|"&$key)
    EndIf
    Next
    EndIf
    Else
    _GUICtrlListViewDeleteItem ($list, $count)
    IniDelete (@ScriptDir&"\haschs.ini", "sounds", "s"&$count+1)
    EndIf
    _refresh()
    Else
    ToolTip("nothing selected")
    sleep(500)
    ToolTip("")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _editasound()
    GUISetState(@SW_SHOW, $hksetup_gui)
    Global $edit=1
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    $key = _GUICtrlListViewGetItemText($list, -1, 0)
    If StringInStr($key, "STRG+") >= 1 Then
    GUICtrlSetData($hotkeyinput_combo, "STRG+|STRG+SHIFT+|STRG+ALT+|ALT+SHIFT+", "STRG+")
    $key = StringSplit($key, "+")
    $key = $key[$key[0]]
    GUICtrlSetData($hotkeyinput, $key)
    EndIf
    If StringInStr($key, "STRG+SHIFT+") >= 1 Then
    GUICtrlSetData($hotkeyinput_combo, "STRG+|STRG+SHIFT+|STRG+ALT+|ALT+SHIFT+", "STRG+SHIFT+")
    $key = StringSplit($key, "+")
    $key = $key[$key[0]]
    GUICtrlSetData($hotkeyinput, $key)
    EndIf
    If StringInStr($key, "STRG+ALT+") >= 1 Then
    GUICtrlSetData($hotkeyinput_combo, "STRG+|STRG+SHIFT+|STRG+ALT+|ALT+SHIFT+", "STRG+ALT+")
    $key = StringSplit($key, "+")
    $key = $key[$key[0]]
    GUICtrlSetData($hotkeyinput, $key)
    EndIf
    If StringInStr($key, "ALT+SHIFT+") >= 1 Then
    GUICtrlSetData($hotkeyinput_combo, "STRG+|STRG+SHIFT+|STRG+ALT+|ALT+SHIFT+", "ALT+SHIFT+")
    $key = StringSplit($key, "+")
    $key = $key[$key[0]]
    GUICtrlSetData($hotkeyinput, $key)
    EndIf
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    GUICtrlSetData($newsoundfile_input, $sound)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _browse()
    Do
    $valid = 1
    Global $soundfilenew = FileOpenDialog("Select Soundfile", @ScriptDir&"\sounds\", "Audio (*.*)")
    If StringinStr($soundfilenew, "\sounds\") = 0 Then $valid = 0
    If $valid = 1 Then
    $soundfilenew = StringSplit($soundfilenew, "\")
    If IsArray($soundfilenew) Then $soundfilenew = $soundfilenew[$soundfilenew[0]]
    EndIf
    Until $valid=1
    GUICtrlSetData($newsoundfile_input, $soundfilenew)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _test()
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    If $sound <> "" Then
    SoundPlay(@ScriptDir&"\sounds\"&$sound, 1)
    Else
    ToolTip("nothing selected")
    sleep(500)
    ToolTip("")
    EndIf
    EndFunc ;==> _test()

    [/autoit] [autoit][/autoit] [autoit]

    Func _send()
    If $mixernumber <> "" AND $micronumber <> "" Then
    $sound = _GUICtrlListViewGetItemText($list, -1, 1)
    If $sound <> "" Then
    GetSetLineSrc($mixers,$curmixer,$mixernumber)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    sleep(100)
    _sendkey("down", "u")
    SoundPlay(@ScriptDir&"\sounds\"&$sound, 1)
    _sendkey("up", "u")
    sleep(100)
    GetSetLineSrc($mixers,$curmixer,$micronumber)
    sleep(100)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    Else
    ToolTip("nothing selected")
    sleep(500)
    ToolTip("")
    EndIf
    Else
    ToolTip("Error while detecting Mixer")
    sleep(500)
    ToolTip("")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _sendhk()
    $sound = ""
    $hk = @HotKeyPressed
    ;MsgBox(0,"", $hk)
    $ini = IniReadSection(@ScriptDir&"\active.lev", "hk")
    If IsArray($ini) Then
    For $i = 1 To $ini[0][0]
    $hk1 = StringSplit($ini[$i][1],"|")
    If $hk1[1] = $hk Then
    $sound = StringSplit($ini[$i][1],"|")
    $sound = $sound[$sound[0]]
    ;MsgBox(0,"", $sound)
    EndIf
    Next
    If $mixernumber <> "" AND $micronumber <> "" Then

    If $sound <> "" Then
    GetSetLineSrc($mixers,$curmixer,$mixernumber)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    sleep(100)
    _sendkey("down", "u")
    SoundPlay(@ScriptDir&"\sounds\"&$sound, 1)
    _sendkey("up", "u")
    sleep(100)
    GetSetLineSrc($mixers,$curmixer,$micronumber)
    sleep(100)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    Else
    EndIf
    Else
    EndIf
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _hks()
    Global $active = 0
    FileDelete(@ScriptDir&"\active.lev")
    $hotkey1 = 0
    $count = _GUICtrlListViewGetItemCount ($list)
    ;MsgBox(0,"", $count)
    For $i = 0 To $count
    $hotkey = _GUICtrlListViewGetItemText($list, $i, 0)
    ;MsgBox(0,"", $hotkey)
    If StringInStr($hotkey, "STRG+") <> 0 Then
    $key = StringSplit($hotkey, "+")
    $key = $key[$key[0]]
    $hotkey1 = "^"&$key
    EndIf
    If StringInStr($hotkey, "STRG+SHIFT+") <> 0 Then
    $key = StringSplit($hotkey, "+")
    $key = $key[$key[0]]
    $hotkey1 = "^+"&$key
    EndIf
    If StringInStr($hotkey, "STRG+ALT+") <> 0 Then
    $key = StringSplit($hotkey, "+")
    $key = $key[$key[0]]
    $hotkey1 = "^!"&$key
    EndIf
    If StringInStr($hotkey, "ALT+SHIFT+") <> 0 Then
    $key = StringSplit($hotkey, "+")
    $key = $key[$key[0]]
    $hotkey1 = "!+"&$key
    EndIf
    If _GUICtrlListViewGetItemText($list, $i, 1) <> "" Then
    HotKeySet($hotkey1, "_sendhk")
    IniWrite(@ScriptDir&"\active.lev", "hk", "s"&$i+1, $hotkey1&"|"&_GUICtrlListViewGetItemText($list, $i, 1))
    EndIf
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _sendkey($state, $key)
    If $state = "down" Then
    If $key = "middle" Then MouseDown("middle")
    If $key <> "middle" Then send("{"&$key&" down}")
    EndIf
    If $state = "up" Then
    If $key = "middle" Then MouseUp("middle")
    If $key <> "middle" Then send("{"&$key&" up}")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _refresh()
    _GUICtrlListViewDeleteAllItems ($list)
    _addsounds()
    Global $key = IniRead(@ScriptDir&"\haschs.ini", "main", "ts2sendkey", "")
    GUICtrlSetData($key_label, "Send Key: "&$key)
    Global $edit=0
    ;------Combo-Box-content------------
    Global $mixernames=""
    Global $FormSelectInput =0
    Global $TV_SelectInput = 0
    Global $CMB_DevName=0
    Global $CKB_EnableLinefocus =0
    Global $lastlinesrc=-1
    Global $curmixer= 0
    Global $Index = 0
    If GetAllRecordDevs($mixers,$mxline) Then GetLineConnectionsNames($mixers,$mxInList,$curmixer)
    $combo = ""
    For $i=0 To UBound($mxInList)-1
    If $mxInList[$i][$lst_destname] <> "" Then
    $combo = $combo&"|"&$mxInList[$i][$lst_destname]
    EndIf
    Next
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($ts2key_label, "Key: "&IniRead(@ScriptDir&"\haschs.ini", "main", "ts2sendkey", "notset"))
    GUICtrlSetData($micro_combo, $combo, IniRead(@ScriptDir&"\haschs.ini", "main", "microphone", ""))
    GUICtrlSetData($input_combo, $combo, IniRead(@ScriptDir&"\haschs.ini", "main", "input", ""))
    ;------Combo-Box-content------------

    [/autoit] [autoit][/autoit] [autoit]

    If GetAllRecordDevs($mixers,$mxline) Then GetLineConnectionsNames($mixers,$mxInList,$curmixer)
    For $i=0 To UBound($mxInList)-1
    If $mxInList[$i][$lst_destname] = IniRead(@ScriptDir&"\haschs.ini", "main", "input", "") Then
    $mixer=$mxInList[$i][$lst_destname]
    Global $mixernumber=$i
    EndIf
    Next
    For $i=0 To UBound($mxInList)-1
    If $mxInList[$i][$lst_destname] = IniRead(@ScriptDir&"\haschs.ini", "main", "microphone", "") Then
    $micro=$mxInList[$i][$lst_destname]
    Global $micronumber=$i
    EndIf
    Next
    EndFunc ;==> _refresh()

    [/autoit] [autoit][/autoit] [autoit]

    Func _setkey()
    $gui1 = WinGetPos("Configuration")
    WinMove("Push-To-Talk Key", "", $gui1[0]+($gui1[2]/2)-70, $gui1[1]+($gui1[3]/2)-22)
    GUISetState(@SW_SHOW, $presskey_gui)
    sleep(500)
    While 1
    $key = _GetKeyPressed()
    If ($key <> -1) Then Exitloop
    If _IsPressed("04") = 1 Then
    $key = "middle"
    Exitloop
    EndIf
    WEnd
    ;MsgBox(0,"",$key)
    GUICtrlSetData($key_label, "Send Key: "&StringLower($key))
    GUISetState(@SW_Hide, $presskey_gui)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _configsave()
    IniWrite(@ScriptDir&"\haschs.ini", "main", "microphone", GUICtrlRead($micro_combo))
    IniWrite(@ScriptDir&"\haschs.ini", "main", "input", GUICtrlRead($input_combo))
    $key = StringReplace(GUICtrlRead($key_label), "Send Key: ", "")
    IniWrite(@ScriptDir&"\haschs.ini", "main", "ts2sendkey", $key)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _switch()
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    If GetAllRecordDevs($mixers,$mxline) Then GetLineConnectionsNames($mixers,$mxInList,$curmixer)
    For $i=0 To UBound($mxInList)-1
    If $mxInList[$i][$lst_destname] = IniRead(@ScriptDir&"\haschs.ini", "main", "input", "") Then
    $mixer=$mxInList[$i][$lst_destname]
    Global $mixernumber=$i
    EndIf
    Next
    For $i=0 To UBound($mxInList)-1
    If $mxInList[$i][$lst_destname] = IniRead(@ScriptDir&"\haschs.ini", "main", "microphone", "") Then
    $micro=$mxInList[$i][$lst_destname]
    Global $micronumber=$i
    EndIf
    Next
    $device = GUICtrlRead($activedevice)
    If $device = IniRead(@ScriptDir&"\haschs.ini", "main", "input", "") Then
    GetSetLineSrc($mixers,$curmixer,$micronumber)
    sleep(100)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    EndIf
    If $device = IniRead(@ScriptDir&"\haschs.ini", "main", "microphone", "") Then
    GetSetLineSrc($mixers,$curmixer,$mixernumber)
    sleep(100)
    ;-----Current Mixxer-----
    $currentinputdevice=GetSetLineSrc($mixers,$index,0,0)
    GUICtrlSetData($activedevice, $mxInList[$currentinputdevice][$lst_destname])
    ;---------------------------
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function: _GetKeyPressed($iOption)
    ; Description: Returns the keyboard key that was pressed.
    ; Parameter(s): $iOption = 1: Returns ASCII value for the key pressed.
    ; $iOption = 0: Returns Hex value for the key pressed.
    ; $iOption = 2: Returns the character for the key pressed.
    ; Requirement(s): Must include <misc.au3>
    ; Return Value(s): On Success - Returns a character corresponding the keyboard button pressed.
    ; On Failure - -1(No key was pressed) and Set
    ; @ERROR to: 1 - No key was pressed.
    ; Author(s): Chris95219 and The Author of _IsPressed()
    ; Note(s):
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetKeyPressed($iOption = 2)
    For $i = 0 to 255
    if (_IsPressed(Hex($i, 2))) Then
    Select
    Case $iOption = 0
    Return Hex($i)
    Case $iOption = 1
    Return $i
    Case $iOption = 2
    Return Chr($i)
    EndSelect
    EndIf
    Next
    SetError(1)
    Return -1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    benötigte Datein um Source laufen zu lassen:

    Spoiler anzeigen
    [autoit]


    ;by wiredbits
    ;Selects inputline to record off of
    ;my system has two sounds cards and all went well with both
    ;need to clean up a few things and add comments....well maybe..Grin
    #include <GUIConstants.au3>
    #include <MXSelectInputSrc_include.au3>
    $trayicon="start.ico"

    [/autoit] [autoit][/autoit] [autoit]

    $mixernames=""
    $FormSelectInput =0
    $TV_SelectInput = 0
    $CMB_DevName=0
    $CKB_EnableLinefocus =0
    $test=0
    ;default mixer is always 0 (so far) which is last audio device installed or prefered deviced selected by user
    $defaultmixer=0
    $lastlinesrc=-1
    $curmixer=$defaultmixer
    If GetAllRecordDevs($mixers,$mxline) Then GetLineConnectionsNames($mixers,$mxInList,$curmixer)
    ;OpenSelectInputSrcWND()
    ;While 1
    ; $admsg = GuiGetMsg(1)
    ; $msg=$admsg[0]
    ; Select
    ; Case $FormSelectInput<>0 And $admsg[1]=$FormSelectInput And $msg = $GUI_EVENT_CLOSE
    ; GUIDelete($FormSelectInput)
    ; $FormSelectInput=0
    ; ExitLoop
    ; Case $admsg[1]=$FormSelectInput
    ; FormSelectInputMsgs($msg)
    ; EndSelect
    ;WEnd
    ;CloseAllMixers($mixers)

    [/autoit] [autoit][/autoit] [autoit]

    Func FormSelectInputMsgs($msg)
    Local $cnt,$i,$x,$id,$src,$tmp,$state
    $cnt=$mxInList[0][0]
    If $cnt Then
    Select
    Case $msg=$CMB_DevName
    $tmp=GUICtrlRead($CMB_DevName)
    $x=-1
    For $i=0 To $mixers[0][0]-1
    If $tmp=$mixers[$i][$MIX_DEVNAME] Then
    $x=$i
    ExitLoop
    EndIf
    Next ;$i
    If $x<>-1 and $x<>$curmixer Then
    $curmixer=$x
    GUICtrlDelete($TV_SelectInput)
    $TV_SelectInput = GUICtrlCreateTreeView(32, 104, 241, 273,BitOR($TVS_HASBUTTONS, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_CHECKBOXES),$WS_EX_CLIENTEDGE)
    GetLineConnectionsNames($mixers,$mxInList,$curmixer)
    SetupTreeivew($x)
    EndIf
    Case $msg>=$mxInList[0][$lst_ctrid] And $msg<=$mxInList[$cnt-1][$lst_ctrid]
    $id=GUICtrlRead($TV_SelectInput)
    For $i=0 To $cnt-1
    If $id=$mxInList[$i][$lst_ctrid] Then $src=$i
    GUICtrlSetState($mxInList[$i][$lst_ctrid],$GUI_UNCHECKED)
    Next ;i
    GUICtrlSetState($id,$GUI_CHECKED)
    $i=GetSetLineSrc($mixers,$curmixer,0,0)
    If $i<>$src Then $lastlinesrc=GetSetLineSrc($mixers,$curmixer,$src)
    EndSelect
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OpenSelectInputSrcWND()
    If $FormSelectInput=0 Then
    ;Generated with Form Designer preview
    $FormSelectInput = GUICreate("Please Select Input Line", 304, 432, 286, 157)
    GUISetFont(10, 400, 0, "MS Sans Serif")
    GUISetIcon (@ScriptDir & "\"& $trayicon,0)
    $CMB_DevName=GUICtrlCreateCombo("", 32, 64, 241, 24)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Available Input lines", 76, 29, 170, 20)
    GUICtrlSetFont(-1, 10, 800, 2, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x000080)
    $TV_SelectInput = GUICtrlCreateTreeView(32, 104, 241, 273,BitOR($TVS_HASBUTTONS, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_CHECKBOXES),$WS_EX_CLIENTEDGE)
    GUICtrlSetData($CMB_DevName,$mixernames)
    GUICtrlSetData($CMB_DevName,$mixers[$curmixer][$MIX_DEVNAME])
    SetupTreeivew($curmixer)
    GUISetState(@SW_SHOW,$FormSelectInput)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func SetupTreeivew($index)
    local $i,$id
    If $mxInList[0][0] Then
    For $i=0 To $mxInList[0][0]-1
    $mxInList[$i][$lst_ctrid]=GUICtrlCreateTreeViewItem($mxInList[$i][$lst_destname],$TV_SelectInput)
    Next ;i
    $i=GetSetLineSrc($mixers,$index,0,0) ;get current input line
    GUICtrlSetState($mxInList[$i][$lst_ctrid],BitOR($GUI_CHECKED,$GUI_FOCUS))
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetLineConnectionsNames(ByRef $mixers,ByRef $mxInList,$index)
    Local $i,$x,$n,$hmxobj,$ret
    If $mixers[0][0] Then
    $hmxobj=$mixers[$index][$MIX_HMXOBJ]
    $x=0
    For $n=0 To $mixers[$index][$MIX_CCONNECTIONS]-1
    zeroline($mxline)
    $mxline[$dwDestination]=$mixers[$index][$MIX_DWLINEID]
    $mxline[$dwSource]=$n
    $ret=MixerGetLineInfo($hmxobj,$mxline,BitOR($MIXER_OBJECTF_HMIXER,$MIXER_GETLINEINFOF_SOURCE)) ;ask for source lines
    If NOT @error Then
    $mxInList[$x][$lst_destname]=$mxline[$szName]
    $mxInList[$x][$lst_dwComponentType]=$mxline[$dwComponentType]
    $x=$x+1
    If UBound($mxInList)<$x+1 Then ReDim $mxInList[$x+2][UBound($mxInList,2)]
    Else
    SetError(1)
    Return False
    EndIf
    Next ;n
    $mxInList[0][0]=$x
    Return True
    Else
    SetError(1)
    Return False
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetSetLineSrc($mixers,$index,$srcindex,$doset=1)
    Local $i,$x,$arraysize,$channels,$mtiems
    CONST $MIXERCONTROLDETAILS_BOOLEAN_SIZEOF=4
    Local $mixercontroldetails=DllStructCreate( _
    "dword;" & _ ;DWORD cbStruct
    "dword;" & _ ;DWORD dwControlID
    "dword;" & _ ;DWORD cChannels;
    "dword;" & _ ;HWND hwndOwner DWORD cMultipleItems;
    "dword;" & _ ;DWORD cbDetails;
    "dword") ;LPVOID paDetails;
    Local CONST $dwControlID=1
    If @error Then Return False
    $mitems=$mixers[$index][$MIX_INMULTIITEMS]
    $channels=$mixers[$index][$MIX_INCHANNELS]
    $arraysize=$channels*$mixers[$index][$MIX_INMULTIITEMS]
    $srcindex=$mitems-$srcindex ;reverse array index
    If $mitems=0 Then Return False;if no items then no need to display
    ;the folowing =array of values, array order is reverse of itmes displayed in treeview
    Local $plistbool=DllStructCreate("dword["&$arraysize+1 &"]") ;give me one mroe than needed
    If @error Then Return False
    $hmxobj=$mixers[$index][$MIX_HMXOBJ]
    DllStructSetData($mixercontroldetails,$cbStruct,DllStructGetSize($mixercontroldetails))
    DllStructSetData($mixercontroldetails,2,$mixers[$index][$MIX_INCTRLID])
    DllStructSetData($mixercontroldetails,3,$mixers[$index][$MIX_INCHANNELS])
    DllStructSetData($mixercontroldetails,4,$mixers[$index][$MIX_INMULTIITEMS])
    DllStructSetData($mixercontroldetails,5,$MIXERCONTROLDETAILS_BOOLEAN_SIZEOF) ;cbDetails to sizeof one bool struct
    DllStructSetData($mixercontroldetails,6,DllStructGetPtr($plistbool)) ;paDetails set ptr
    $ret = DLLCall("winmm.dll","long","mixerGetControlDetails","hwnd",$hmxobj,"ptr",DllStructGetPtr($mixercontroldetails),"long",BitOR($MIXER_OBJECTF_HMIXER,$MIXER_GETCONTROLDETAILSF_VALUE))
    If NOT @error Then
    If $ret[0]=$MMSYSERR_NOERROR Then
    For $i= 1 To $mitems Step $channels ;
    If DllStructGetData($plistbool,1,$i+$channels-1)<>0 then $x=$i
    DllStructSetData($plistbool,1,0,$i+$channels-1)
    Next ;i
    DllStructSetData($plistbool,1,1,$srcindex+$channels-1)
    If $doset Then $ret = DLLCall("winmm.dll","long","mixerSetControlDetails","hwnd",$hmxobj,"ptr",DllStructGetPtr($mixercontroldetails),"long",BitOR($MIXER_OBJECTF_HMIXER,$MIXER_SETCONTROLDETAILSF_VALUE))
    If NOT @error Then
    If $ret[0] =$MMSYSERR_NOERROR Then return $mixers[$index][$MIX_INMULTIITEMS]- $x
    EndIf
    EndIf
    EndIf
    Return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetAllRecordDevs(ByRef $mixers,ByRef $line)
    Local $i,$hmxobj,$name
    OpenAllMixers($mixers)
    If $mixers[0][0]=0 Then Return False
    For $i=0 To $mixers[0][0]-1
    $hmxobj=$mixers[$i][$MIX_HMXOBJ]
    zeroline($line)
    $line[$dwLineID]=BitOR($i,0xFFFF0000)
    $line[$dwComponentType]=$MIXERLINE_COMPONENTTYPE_DST_WAVEIN
    MixerGetLineInfo($hmxobj,$line,$MIXER_GETLINEINFOF_COMPONENTTYPE)
    If @error Then Return False
    $mixers[$i][$MIX_RECNAME]=$line[$szName] ;wave in ccontrol name
    $mixers[$i][$MIX_CCONNECTIONS]=$line[$cConnections] ;number of destination lines
    $mixers[$i][$MIX_INCCONTROLS]=$line[$cControls]
    $mixers[$i][$MIX_DWLINEID]=$line[$dwLineID] ;line id
    $mixers[$i][$MIX_INCHANNELS]=$line[$cChannels]
    If NOT GetMxCtrlDetails($mixers,$i) Then Return False
    $name=MixerGetDevName($mixers[$i][$MIX_HMXOBJ])
    If @error Then Return False
    $mixers[$i][$MIX_DEVNAME]=$name
    If $mixernames="" Then
    $mixernames=$name
    Else
    $mixernames=$mixernames&"|"&$name
    EndIf
    Next ;i
    Return True
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetMxCtrlDetails(ByRef $mixers,$index)
    Local $mitems,$chans,$hmxobj,$x,$ret
    ;local structures are nuked on exit...so i have read..LOL
    Local $mixercontrol=DllStructCreate( _
    "dword;" & _ ; DWORD cbStruct;
    "dword;" & _ ; DWORD dwControlID;
    "dword;" & _ ; DWORD dwControlType;
    "dword;" & _ ; DWORD fdwControl;
    "dword;" & _ ; DWORD cMultipleItems;
    "char[16];" & _ ;szShortName[MIXER_SHORT_NAME_CHARS];
    "char[64];" & _ ;szName[MIXER_LONG_NAME_CHARS];
    "dword[6];" & _ ; DWORD dwReserved[6];
    "dword[6]") ; DWORD dwReserved[6];
    If @error Then return False
    Local $mixerlinecontrols=DllStructCreate( _
    "dword;"& _ ; cbStruct;
    "dword;" & _ ; DWORD dwLineID;
    "dword;" & _ ; DWORD dwControlID DWORD dwControlType;
    "dword;" & _ ; DWORD cControls;
    "dword;" & _ ; DWORD cbmxctrl;
    "ptr") ; LPMIXERCONTROL pamxctrl;
    If @error Then return False
    $hmxobj=$mixers[$index][$MIX_HMXOBJ]
    DllStructSetData($mixerlinecontrols,$cbStruct,DllStructGetSize($mixerlinecontrols))
    DllStructSetData($mixerlinecontrols,2,$mixers[$index][$MIX_DWLINEID])
    DllStructSetData($mixerlinecontrols,3,$MIXERCONTROL_CONTROLTYPE_MUX)
    DllStructSetData($mixerlinecontrols,4,0)
    DllStructSetData($mixerlinecontrols,5,DllStructGetSize($mixercontrol))
    DllStructSetData($mixerlinecontrols,6,DllStructGetPtr($mixercontrol))
    $ret = DLLCall("winmm.dll","long","mixerGetLineControls","hwnd",$hmxobj,"ptr",DllStructGetPtr($mixerlinecontrols),"long",BitOR($MIXER_OBJECTF_HMIXER,$MIXER_GETLINECONTROLSF_ONEBYTYPE ))
    If @error Then return False
    If $ret[0]<>$MMSYSERR_NOERROR Then
    DllStructSetData($mixerlinecontrols,3,$MIXERCONTROL_CONTROLTYPE_SINGLESELECT)
    $ret = DLLCall("winmm.dll","long","mixerGetLineControls","hwnd",$hmxobj,"ptr",DllStructGetPtr($mixerlinecontrols),"long",BitOR($MIXER_OBJECTF_HMIXER,$MIXER_GETLINECONTROLSF_ONEBYTYPE ))
    If @error Then return False
    EndIf
    If $ret[0]<>$MMSYSERR_NOERROR Then Return False
    $x=DllStructGetData($mixercontrol,3) ;dwControlType get type of control
    If BitAND($x,$MIXERCONTROL_CT_CLASS_MASK)=$MIXERCONTROL_CT_CLASS_LIST Then
    $chans=$mixers[$index][$MIX_INCHANNELS]
    $x=DllStructGetData($mixercontrol,4) ;fwControl
    If BitAND($x,$MIXERCONTROL_CONTROLF_UNIFORM) Then $chans=1
    $mixers[$index][$MIX_INCHANNELS]=$chans
    $x=DllStructGetData($mixercontrol,4) ;fwControl
    $mitems= 0
    If BitAND($x,$MIXERCONTROL_CONTROLF_MULTIPLE) Then $mitems=DllStructGetData($mixercontrol,5)
    $mixers[$index][$MIX_INMULTIITEMS]=$mitems
    $mixers[$index][$MIX_INCTRLID]=DllStructGetData($mixercontrol,2)
    If $mitems Then Return True
    EndIf
    Return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func zeroline(ByRef $line)
    local $i
    For $i=0 To UBound($line)-1
    $line[$i]=0
    Next ;i
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MixerGetLineInfo($hmxobj,ByRef $line,$flag)
    Local $mixerline= DllStructCreate("dword;dword;dword;dword;dword;dword;dword;dword;dword;dword;char[16];char[64];dword;dword;short;short;dword;char[32]")
    If @error Then
    SetError(1)
    Return False
    EndIf
    Local $i
    For $i=1 To UBound($line)-1
    DllStructSetData($mixerline,$i,$line[$i])
    Next ;i
    DllStructSetData($mixerline,$cbStruct,DllStructGetSize($mixerline))
    $ret = DLLCall("winmm.dll","long","mixerGetLineInfo","hwnd",$hmxobj,"ptr",DllStructGetPtr($mixerline),"int", $flag)
    If @error Then
    SetError(1)
    Return False
    EndIf
    for $i=1 To $szMPname
    $line[$i]=DllStructGetData($mixerline,$i)
    Next ;i
    If $ret[0]=$MMSYSERR_NOERROR Then Return True
    SetError(1)
    Return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MixerGetDevName($uMxId)
    Local $mxcaps,$i
    $mxcaps=DllStructCreate("short;short;dword;char[32];dword;dword")
    $ret = DLLCall("winmm.dll","long","mixerGetDevCaps","int",$uMxId,"ptr",DllStructGetPtr($mxcaps),"int",DllStructGetSize($mxcaps))
    If @error Then
    SetError(1)
    Return False
    EndIf
    If $ret[0]=$MMSYSERR_NOERROR Then Return DllStructGetData($mxcaps,4)
    SetError(2)
    return False
    EndFunc

    ;On Entry: handle to mixer an ID is mapped to
    ;On Exit: ID or 0 if fails
    Func MixerGetID($hmxobj)
    Local $x,$puMxId
    $puMxId=DllStructCreate("udword") ;since a local will be deleted on exit of function
    DllStructSetData($puMxId,1,0)
    $ret = DLLCall("winmm.dll","long","mixerGetID","hwnd",$hmxobj,"ptr",DllStructGetPtr($puMxId),"int",$MIXER_OBJECTF_HMIXER)
    If @error Or $ret[0]<>$MMSYSERR_NOERROR Then
    SetError(1)
    Return False
    EndIf
    Return DllStructGetData($puMxId,1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;On Entry: 2 dim array
    ;On Exit: MIX_HMXOBJ set to return value from mixeropn...check for @error
    Func OpenAllMixers(ByRef $mixers)
    Local $i,$mxnumdevs,$hmxobj
    $mxnumdevs=mixerGetNumDevs()
    If $mxnumdevs Then
    ReDim $mixers[$mxnumdevs+1][$AMIX_SIZEOF]
    For $i=0 To $mxnumdevs-1
    $hmxobj=mixerOpen($i,0,0,$MIXER_OBJECTF_MIXER)
    If @error Then
    SetError(1)
    Return False
    EndIf
    $mixers[$i][$MIX_HMXOBJ]=$hmxobj
    Next ;i
    EndIf
    $mixers[0][0]=$mxnumdevs
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;On ENtry: mixer id and flag , if no id passed then the preffered id is used (0) ditto for flag
    ;on exit: mixer handle
    Func MixerOpen($uMxid=0,$hwnd=0,$instance=0,$fdwOpen=0)
    Local $x,$h_struct
    $h_struct=DllStructCreate("udword") ;since a local will be deleted on exit of function
    If @error Then
    SetError(1)
    Return False
    EndIf
    $ret = DLLCall("winmm.dll","long","mixerOpen","ptr",DllStructGetPtr($h_struct),"int",$uMxid,"int",$hwnd,"int",$instance,"int",$fdwOpen)
    If NOT @error Then
    If $ret[0]<>$MMSYSERR_NOERROR Then Return -1
    $x=DllStructGetData($h_struct,1)
    Return $x
    EndIf
    SetError(1)
    return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CloseAllMixers($mixers)
    Local $i,$cnt
    $cnt=$mixers[0][0]
    For $i= 0 To $cnt-1
    MixerClose($mixers[$i][$MIX_HMXOBJ])
    Next ;i
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;On Entry: mixer handle
    Func MixerClose($hmxobj)
    $ret = DLLCall("winmm.dll","long","mixerClose","long",$hmxobj)
    If NOT @error Then Return True
    return False
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func mixerGetNumDevs()
    $ret = DLLCall("winmm.dll","long","mixerGetNumDevs")
    If NOT @error Then Return $ret[0]
    SetError(1)
    return False
    EndFunc

    [/autoit]
    Spoiler anzeigen
    [autoit]


    ;added constants as i needed them so not really in order.
    CONST $MMSYSERR_NOERROR=0
    CONST $WAVERR_BASE=32
    CONST $WAVERR_BADFORMAT =($WAVERR_BASE + 0)
    CONST $MAXPNAMELEN= 32

    [/autoit] [autoit][/autoit] [autoit]

    CONST $MIXERLINE_COMPONENTTYPE_DST_FIRST= 0
    CONST $MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=($MIXERLINE_COMPONENTTYPE_DST_FIRST+4)

    [/autoit] [autoit][/autoit] [autoit]

    CONST $MIXER_GETLINEINFOF_COMPONENTTYPE=3
    CONST $MIXERLINE_COMPONENTTYPE_SRC_FIRST= 0x1000
    CONST $MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE= ($MIXERLINE_COMPONENTTYPE_SRC_FIRST+3)
    CONSt $MIXERLINE_COMPONENTTYPE_DST_WAVEIN =($MIXERLINE_COMPONENTTYPE_DST_FIRST+7)
    CONST $MIXERLINE_COMPONENTTYPE_DST_LAST =($MIXERLINE_COMPONENTTYPE_DST_FIRST+8)
    CONSt $MIXER_GETLINEINFOF_SOURCE= 1

    [/autoit] [autoit][/autoit] [autoit]

    CONST $MIXER_GETLINEINFOF_DESTINATION=0
    CONST $MIXER_GETLINEINFOF_LINEID =2
    CONST $MIXERCONTROL_CT_SC_LIST_SINGLE = 0x00000000
    CONST $MIXERCONTROL_CT_CLASS_LIST = 0x70000000
    CONST $MIXERCONTROL_CT_SC_LIST_MULTIPLE = 0x01000000
    CONST $MIXERCONTROL_CT_UNITS_BOOLEAN = 0x00010000
    CONST $MIXERCONTROL_CT_CLASS_MASK = 0xF0000000
    CONST $MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT= BitOR($MIXERCONTROL_CT_CLASS_LIST , $MIXERCONTROL_CT_SC_LIST_MULTIPLE , $MIXERCONTROL_CT_UNITS_BOOLEAN)
    CONST $MIXERCONTROL_CONTROLTYPE_MIXER = ($MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
    CONST $MIXERCONTROL_CONTROLTYPE_SINGLESELECT= BitOR($MIXERCONTROL_CT_CLASS_LIST , $MIXERCONTROL_CT_SC_LIST_SINGLE , $MIXERCONTROL_CT_UNITS_BOOLEAN)
    CONST $MIXERCONTROL_CONTROLTYPE_MUX =($MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1)
    CONST $MIXER_GETCONTROLDETAILSF_VALUE= 0
    CONST $MIXER_SETCONTROLDETAILSF_VALUE= 0
    CONST $MIXERCONTROL_CONTROLF_UNIFORM= 1
    CONST $MIXERCONTROL_CONTROLF_MULTIPLE= 2

    [/autoit] [autoit][/autoit] [autoit]

    CONSt $MIXERCONTROL_CT_SC_METER_POLLED =0
    CONST $MIXERCONTROL_CT_CLASS_METER= 0x10000000
    CONST $MIXERCONTROL_CT_UNITS_SIGNED= 0x20000
    CONST $MIXERCONTROL_CT_UNITS_UNSIGNED= 0x30000
    CONST $MIXERCONTROL_CT_CLASS_FADER= 0x50000000
    CONST $MIXERCONTROL_CT_CLASS_NUMBER= 0x30000000
    CONST $MIXERCONTROL_CONTROLTYPE_FADER= BitOR($MIXERCONTROL_CT_CLASS_FADER,$MIXERCONTROL_CT_UNITS_UNSIGNED)
    CONST $MIXERCONTROL_CONTROLTYPE_VOLUME= ($MIXERCONTROL_CONTROLTYPE_FADER+1)
    CONST $MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER= BitOR($MIXERCONTROL_CT_CLASS_METER,$MIXERCONTROL_CT_SC_METER_POLLED,$MIXERCONTROL_CT_UNITS_UNSIGNED)
    CONST $MIXERCONTROL_CONTROLTYPE_UNSIGNED =BitOR($MIXERCONTROL_CT_CLASS_NUMBER,$MIXERCONTROL_CT_UNITS_UNSIGNED)
    CONST $MIXERCONTROL_CONTROLTYPE_SIGNED =BitOR($MIXERCONTROL_CT_CLASS_NUMBER,$MIXERCONTROL_CT_UNITS_SIGNED)

    [/autoit] [autoit][/autoit] [autoit]

    CONST $MIXER_OBJECTF_WAVEIN= 0x20000000
    CONST $MIXER_SHORT_NAME_CHARS= 16
    CONST $MIXER_LONG_NAME_CHARS= 64
    CONST $MIXER_GETLINECONTROLSF_ALL =0
    CONST $MIXER_GETLINECONTROLSF_ONEBYID= 1
    CONST $MIXER_GETLINECONTROLSF_ONEBYTYPE= 2
    CONST $MIXER_OBJECTF_HANDLE= 0x80000000
    CONST $MIXER_OBJECTF_MIXER =0
    CONST $MIXER_OBJECTF_HMIXER= BitOR ($MIXER_OBJECTF_HANDLE,$MIXER_OBJECTF_MIXER)
    CONST $MIXER_GETCONTROLDETAILSF_LISTTEXT=1
    CONST $CALLBACK_NULL= 0
    CONST $WAVE_MAPPED= 4
    CONST $MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT =($MIXERLINE_COMPONENTTYPE_SRC_FIRST+8)

    [/autoit] [autoit][/autoit] [autoit]

    CONST $wMid=1
    CONST $wPid=2
    CONST $vDriverVersion=3
    CONST $szPname=4
    CONST $dwFormats=5
    CONST $wChannels=6
    CONST $wReserved1=7
    CONST $AWICAPS_SIZEOF=$wReserved1+1

    [/autoit] [autoit][/autoit] [autoit]

    ;mixer
    CONST $fdwSupport=5
    CONST $cDestinations=6
    CONST $AMXCAPS_SIZEOF=$cDestinations+2 ;leave room for num cells

    [/autoit] [autoit][/autoit] [autoit]

    ;line struct
    CONST $cbStruct=1
    CONST $dwDestination=2
    CONST $dwSource=3
    CONST $dwLineID=4
    CONST $fdwLine=5
    CONST $dwUser=6
    CONST $dwComponentType=7
    CONST $cChannels=8
    CONST $cConnections=9
    CONST $cControls=10
    CONST $szShortName=11
    CONST $szName=12
    CONST $dwType=13
    CONST $dwDeviceID=14
    CONST $wMMid=15
    CONST $wMPid=16
    CONST $vMDriverVersion=17
    CONST $szMPname=18
    $AMXLINE_SIZEOF=$szMPname+2

    [/autoit] [autoit][/autoit] [autoit]

    CONST $cbCStruct= 1
    CONST $dwCLineID= 2
    CONST $dwControlID= 3
    CONST $dwControlType=4
    CONST $cCControls= 5
    CONST $cbmxctrl= 6
    CONST $pamxctrl= 7
    CONST $MXXTRLS_SIZEOF=$pamxctrl+2

    [/autoit] [autoit][/autoit] [autoit]

    CONST $lst_destname= 1
    CONST $lst_dwComponentType= 2
    CONST $lst_ctrid= 3

    [/autoit] [autoit][/autoit] [autoit]

    CONST $MIX_HMXOBJ= 1
    CONST $MIX_DEVNAME= 2
    CONST $MIX_CAPCDEST= 3
    CONST $MIX_RECNAME= 4
    CONST $MIX_CCONNECTIONS= 5
    CONST $MIX_INCCONTROLS= 6
    CONST $MIX_DWLINEID= 7
    CONST $MIX_INCHANNELS= 8
    CONST $MIX_INMULTIITEMS= 9
    CONST $MIX_INCTRLID= 10
    CONST $MIX_OUTCHANNELS=11
    CONST $MIX_OUTMULTIEMS=12
    CONST $MIX_OUTCTRLID= 13
    CONST $MIX_LAST=$MIX_OUTCTRLID+1
    CONST $AMIX_SIZEOF= $MIX_LAST+1
    Dim $mxline[$AMXLINE_SIZEOF]
    Dim $mixers[1][$AMIX_SIZEOF]
    Dim $mxInList[2][4]
    $mixernames=""
    $FormSelectInput =0
    $TV_SelectInput = 0
    $CMB_DevName=0
    $CKB_EnableLinefocus =0
    $defaultmixer=0
    $lastlinesrc=-1
    $curmixer=$defaultmixer

    [/autoit]

    3 Mal editiert, zuletzt von leviathan (23. Juli 2007 um 14:42)