Вот пример с громкостью, SoundVolume.level += 5 прописан для Up. А ниже сама функция. Вниз убавить громкость , вправо "муть", влево переключить режим, в режиме 2 Up открывает привод.
#NoEnv
#Persistent
#SingleInstance force
#InstallKeybdHook
#UseHook
#InstallMouseHook
Process, Close, ConfigRemaper.exe
; #ErrorStdOut ;§¶ErrorStdOut§¶0§¶
Menu, tray, add, Настройки
Menu, tray, add, Заблокировать
Menu, tray, add, Перезапуск
Menu, tray, add, Выход
Menu, tray, NoStandard
Menu, Tray, Icon,,, 1
/*
<ListKey§¶>§key1§¶§key2§¶§key3§¶§key4§¶<§¶ListKey>
<ListConfig§¶>§режим1§¶§режим2§¶§режим3§¶<§¶ListConfig>
<KeyCodeList§¶>¶key1¶Up§¶key2¶Down§¶key3¶Right§¶key4¶Left§<§¶KeyCodeList>
<AlwaysOnTop§¶>-<§¶AlwaysOnTop>
<Autorun§¶>0<§¶Autorun>
<Patchbackup§¶>E:\ммм<§¶Patchbackup>
*/
;§¶StartScript§¶
b1 := ["режим1","режим2","режим3"] ;§¶Режимы
a1 := 1
Config := b1[a1]
Config := "режим1" ;§¶Стартовы駶
Return
Config:
Config := b1[a1 := (!a1) || (a1>=b1.MaxIndex()) ? 1 : a1+1]
GuiConfig:
Gui, Destroy
Gui, +AlwaysOnTop -Border +ToolWindow +HWNDguiHWND
Gui, Color, Blue
Gui, Font, s24 italic, Arial ;§¶GuiFont§¶
Gui, Add, Text, cWhite Center, %Config%
Gui, Show, NoActivate x5 y5 ;§¶GuiShow§¶
SetTimer, Destroy, 1300 ;§¶GuiSetTimer§¶
Return
Destroy:
Gui, Destroy
SetTimer, Destroy, Off
Return
$F2:: ;§Toggle§Config§
ToggleConfig:
IfWinExist, ahk_id %guiHWND%
Gosub, Config
else
Gosub, GuiConfig ;§¶GosubGuiConfig§¶
Return
;#IF Config = "G¶oba¶"
;#IF ;end§G¶oba¶§Config
;#########################################
#IF Config = "режим1"
$Up:: ;§startkey¶key1§режим1§
SoundVolume.level += 5 ;¤¤1¤¤¶¶режим1¶¶key1¶¶Прибавить громкость¶¶
Return ;§режим1§endkey¶key1§
$Left:: ;§startkey¶key4§режим1§
Gosub, ToggleConfig ;¤¤1¤¤¶¶режим1¶¶key4¶¶Следующий режи춶
Return ;§режим1§endkey¶key4§
$Right:: ;§startkey¶key3§режим1§
SoundVolume.mute := !SoundVolume.mute ;¤¤1¤¤¶¶режим1¶¶key3¶¶Вкл.Выкл зву궶
Return ;§режим1§endkey¶key3§
$Down:: ;§startkey¶key2§режим1§
SoundVolume.level -= 5 ;¤¤1¤¤¶¶режим1¶¶key2¶¶Убавить громкость¶¶
Return ;§режим1§endkey¶key2§
#IF ;end§режим1§Config
#IF Config = "режим2"
$Up:: ;§startkey¶key1§режим2§
Gosub, OCCdRom ;¤¤1¤¤¶¶режим2¶¶key1¶¶Открыть или Закрыть лото궶
Return ;§режим2§endkey¶key1§
$Left:: ;§startkey¶key4§режим2§
Gosub, ToggleConfig ;¤¤1¤¤¶¶режим2¶¶key4¶¶Следующий режи춶
Return ;§режим2§endkey¶key4§
#IF ;end§режим2§Config
#IF Config = "режим3"
$Left:: ;§startkey¶key4§режим3§
Gosub, ToggleConfig ;¤¤1¤¤¶¶режим3¶¶key4¶¶Следующий режи춶
Return ;§режим3§endkey¶key4§
#IF ;end§режим3§Config
;§¶КОНЕЦ§¶§¶
Esc::ExitApp
Настройки:
Run %A_ScriptDir%\ConfigRemaper.ahk
ExitApp
Return
TaskSwitcher:
Send {Alt down}{Tab}
WinWait, ahk_class TaskSwitcherWnd, , 1.5
if ErrorLevel
return
SetTitleMatchMode Slow
WinWaitClose
Sleep, 100
Send {Alt up}
Send {Alt up}
Sleep, 200
Send {Alt up}
Send {Alt up}
Return
Перезапуск:
Reload
Return
OCCdRom:
t0 := A_TickCount
Drive, Eject
t1 := A_TickCount - t0
if t1 < 1000
Drive, Eject,, 1
Return
ShowTime:
Con = %Config%
Config = %A_Hour% : %A_Min%`r%A_DDDD%
Gosub, GuiConfig
Config = %Con%
Return
Заблокировать:
If A_IsSuspended = 0
{
Suspend
Menu, Tray, Check, Заблокировать
Con = %Config%
Config = Заблокировано
Gosub, GuiConfig
Gui, Color, Red
Config = %Con%
Return
} else
Suspend
Menu, Tray, Uncheck, Заблокировать
Con = %Config%
Config = Разблокировано
Gosub, GuiConfig
Config = %Con%
Return
Выход:
ExitApp
Class SoundVolumeControl
{
__Set(key, value) {
aev := this.GetAudioEndpointVolume()
If (key = "level")
{
value := value > 100 ? 100 : value < 0 ? 0 : value
DllCall(NumGet(NumGet(aev+0)+7*A_PtrSize), "ptr", aev, "float", value/100), ObjRelease(aev)
return
}
Else If (key = "mute")
{
DllCall(NumGet(NumGet(aev+0)+14*A_PtrSize), "ptr", aev, "int", value? 1:0, "ptr", this.VA_GUID(GuidEventContext)), ObjRelease(aev)
return
}
ELse return "", ObjRelease(aev)
}
__Get(key) {
aev := this.GetAudioEndpointVolume()
If (key = "level")
{
DllCall(NumGet(NumGet(aev+0)+9*A_PtrSize), "ptr", aev, "float*", vol), ObjRelease(aev)
return this.savedLevel := Round(vol*100), this.showToolTip && this.ToolTip("Volume: " . this.savedLevel . "%")
}
Else If (key = "mute")
{
DllCall(NumGet(NumGet(aev+0)+15*A_PtrSize), "ptr", aev, "int*", muteState), ObjRelease(aev)
return muteState
}
ELse return "", ObjRelease(aev)
}
GetAudioEndpointVolume() {
DllCall("ole32\CoCreateInstance"
, "ptr", this.GUID(CLSID_MMDeviceEnumerator, "{BCDE0395-E52F-467C-8E3D-C4579291692E}")
, "ptr", 0
, "uint", 21
, "ptr", this.GUID(IID_IMMDeviceEnumerator, "{A95664D2-9614-4F35-A746-DE8DB63617E6}")
, "ptr*", deviceEnumerator)
, DllCall(NumGet(NumGet(deviceEnumerator+0)+4*A_PtrSize)
, "ptr", deviceEnumerator
, "uint", 0
, "uint", 0
, "ptr*", device)
, ObjRelease(deviceEnumerator)
, DllCall(NumGet(NumGet(device+0)+3*A_PtrSize)
, "ptr", device
, "ptr", this.GUID(iid, "{5CDF2C82-841E-4546-9722-0CF74078229A}")
, "uint", 7
, "uint", 0
, "ptr*", endpointVolume)
, ObjRelease(device)
return endpointVolume
}
GUID(ByRef guid_out, guid_in) {
VarSetCapacity(guid_out, 16, 0), DllCall("ole32\CLSIDFromString", "wstr", guid_in, "ptr", &guid_out)
return &guid_out
}
}
Class SoundVolume extends SoundVolumeControl
{
static savedLevel
static showToolTip := True
}