From 2ed69260ddc6c8b9485c5eaa4103248bca2c1806 Mon Sep 17 00:00:00 2001 From: Tobias Kauder Date: Thu, 28 Jan 2021 15:49:31 +0100 Subject: [PATCH] Readme added --- Readme.md | 25 ++++++++++++++++ hyperaudio.ahk | 79 +++++++++++++++++++++++++++++++++++++++++-------- hyperaudio.exe | Bin 2963968 -> 2967040 bytes 3 files changed, 92 insertions(+), 12 deletions(-) create mode 100644 Readme.md diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..e9af56b --- /dev/null +++ b/Readme.md @@ -0,0 +1,25 @@ +# HyperAudio + +HyperAudio is an AutoHotkey (AHK) script to toogle two Audio Output Devices for Windows 10. + +## Installation + +Run AHK Script or compile it yourself or download precompiled release. + +## Usage + +First run will create a hyperaudio.ini file. +Edit Names of Audio Output Devices. Extract Names from Windows Sound Settings. + +Example +``` +**Headset** (Realtek High Definiton Audio) + +## Contributing +Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. + +Please make sure to update tests as appropriate. + +## License +[GNU GPL v3](https://choosealicense.com/licenses/gpl-3.0/) + diff --git a/hyperaudio.ahk b/hyperaudio.ahk index 830053b..bedbf83 100644 --- a/hyperaudio.ahk +++ b/hyperaudio.ahk @@ -2,12 +2,38 @@ #Persistent ; Keep the script running until the user exits it. Menu, Tray, Tip , Default Audio Device Changer Menu, Tray, NoStandard -Menu, Tray, Add, Exit, MenuExit ; Creates a new menu item. +Menu, Tray, Add, Info, InfoMenu +Menu, Tray, Add, Exit, MenuExit +<<<<<<< HEAD:hyperaudio.ahk device1:="Headset" device2:="Lautsprecher" ; http://www.daveamenta.com/2011-05/programmatically-or-command-line-change-the-default-sound-playback-device-in-windows-7/ +======= +versionnumber := "1.1" +device1 := "Headset" +device2 := "Lautsprecher" + +if not A_IsAdmin +{ + msgbox, 48,Administrator Rights Warning, Please run as Admin. + sleep, 250 + exitapp +} + + +installed_in=%A_ScriptDir% +IfExist, %installed_in%\hyperaudio.ini +{ + iniread, device1, %installed_in%\hyperaudio.ini, Devices, Output1, %device1% + iniread, device2, %installed_in%\hyperaudio.ini, Devices, Output2, %device2% +} else { + iniwrite, %device1%, %installed_in%\hyperaudio.ini, Devices, Output1 + iniwrite, %device2%, %installed_in%\hyperaudio.ini, Devices, Output2 +} + +>>>>>>> e698301... Gui Added. Admin Warning added. Config file added:HyperAudio.ahk Devices := {} IMMDeviceEnumerator := ComObjCreate("{BCDE0395-E52F-467C-8E3D-C4579291692E}", "{A95664D2-9614-4F35-A746-DE8DB63617E6}") @@ -52,11 +78,11 @@ $!WheelUp::Send {Volume_Up 5} $!WheelDown::Send {Volume_Down 5} currentDevice:=false ^F12:: - currentDevice:=!currentDevice - if currentDevice - SetDefaultEndpoint( GetDeviceID(Devices, device1) ) - else - SetDefaultEndpoint( GetDeviceID(Devices, device2) ) +currentDevice:=!currentDevice +if currentDevice + SetDefaultEndpoint( GetDeviceID(Devices, device1) ) +else + SetDefaultEndpoint( GetDeviceID(Devices, device2) ) return SetDefaultEndpoint(DeviceID) @@ -69,12 +95,41 @@ SetDefaultEndpoint(DeviceID) GetDeviceID(Devices, Name) { For DeviceName, DeviceID in Devices - If (InStr(DeviceName, Name)) - Return DeviceID + If (InStr(DeviceName, Name)) + Return DeviceID } MenuExit: -{ -ExitApp -} -return + { + ExitApp + } + return + +InfoMenu: + { + Gui, 2:+AlwaysOnTop +Caption +MinimizeBox +ToolWindow ; +SysMenu + + Gui, 2:Font, s20, Impact + Gui, 2:Add, Text, x15 y20 w280 r1 , HyperAudio, 2021 + + Gui, 2:Font, s8, Lucida Sans Unicode + Gui, 2:Add, Button, x255 y190 w50 h30 gInfoclose vInfoclose, OK + Gui, 2:Add, Text, x15 y60 w200 +Left, Alt+WheelUp:`nAlt+WheelDown: + Gui, 2:Add, Text, x105 y60 w200 +Left, Increase Volume +5`nDecrease Volume +5 + + + Gui, 2:Add, Text, x15 y100 w200 +Left, Ctrl+F12 + Gui, 2:Add, Text, x105 y100 w200 +Left, Toggle Audio Output Device`n(Configure Device Names in ini File) + + Gui, 2:Add, Text, x15 y150 w200 +Left, Version: %versionnumber% + Gui, 2:Add, Text, x15 y175 w200 +Left, Shimao-Blackrock + + Gui, 2:Show, h235 w320, HyperAudio + } + return + +Infoclose: + { + Gui, 2:Destroy + } + return diff --git a/hyperaudio.exe b/hyperaudio.exe index d7d5da767b1e37c3cfcfde72b92e3a731f6bee58..f18c0f354c5000954f33284bd6662feb1d2c8f59 100644 GIT binary patch delta 8805 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 C1hV}A delta 5818 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