Тема: AHK: Изменение яркости экрана
Хотел для игры приспособить код из аналогичной темы в "идеях": http://forum.script-coding.com/viewtopi … 379#p32379, но ничего не получилось.
Вот это прекрасно работает в самой Windows, но в игре не срабатывает.
#NoTrayIcon ; не отображать иконку скрипта в трее
#MaxHotkeysPerInterval 200
#NoEnv ; Не использовать переменные окружения
#SingleInstance force
SetBatchLines -1
br := 128 ; Яркость в интервале от 0 до 255 (нормальное значение яркости 128)
#F2:: ; увеличить яркость Win + F2
#F1:: ; уменьшить яркость Win + F1
Brght_Step = 8 ; шаг регулировки
; -------------------
; НАЧАЛО КОНФИГУРАЦИИ
; -------------------
; Как долго отображать прогресс-бар (в миллисекундах)
vol_DisplayTime = 1500
; Прозрачность окна (0-255)
vol_TransValue = 200
; Цвет бэкграунда окна
vol_CW = EEEEEE
vol_Width = 200 ; ширина прогресс-бара
vol_Thick = 20 ; высота прогресс-бара
; Позиция бара
vol_PosX := A_ScreenWidth/2 - vol_Width/2
vol_PosY := A_ScreenHeight/1.8 - vol_Thick/2
; --------------------
; КОНЕЦ КОНФИГУРАЦИИ
; --------------------
vol_BarOptionsMaster = 1:B1 R0-255 ZH%vol_Thick% ZX8 ZY4 W%vol_Width% X%vol_PosX% Y%vol_PosY% CW%vol_CW%
br += (InStr(A_ThisHotkey, "F1") ? -Brght_Step : Brght_Step )
If ( br > 256 )
br := 256
If ( br < 0)
br := 0
VarSetCapacity(gr, 512*3)
Loop, 256
{
If (nValue:=(br+128)*(A_Index-1))>65535
nValue:=65535
NumPut(nValue, gr, 2*(A_Index-1), "Ushort")
NumPut(nValue, gr, 512+2*(A_Index-1), "Ushort")
NumPut(nValue, gr, 1024+2*(A_Index-1), "Ushort")
}
hDC := DllCall("GetDC", "Uint", 0)
DllCall("SetDeviceGammaRamp", "Uint", hDC, "Uint", &gr)
DllCall("ReleaseDC", "Uint", 0, "Uint", hDC)
vol_ShowBars:
; Получаем значение яркости, т.к. пользователь или другие программы могли ее изменить
vol_Master := br
if vol_Master <> 128
{
vol_Colour = Blue
vol_Text = Brightness
}
else
{
; vol_Colour = Red
vol_Text = Brightness (normal)
}
; Что бы избежать мигания окна, создаем окно только в том случае, если оно не существует
IfWinNotExist, BrightnessOSDxyz
{
Progress, %vol_BarOptionsMaster% CB%vol_Colour% CT%vol_Colour%, , %vol_Text%, BrightnessOSDxyz
WinSet, Transparent, %vol_TransValue%, BrightnessOSDxyz
}
Progress, 1:%vol_Master% , , %vol_Text%
SetTimer, vol_BarOff, %vol_DisplayTime%
return
vol_BarOff:
SetTimer, vol_BarOff, off
Progress, 1:Off
return
А тот код, что там ниже для Nvidia, c обращением к rundll32.exe, вообще срабатывает странно. С гаммой запускается, но никакого эффекта не производит, а с контрастностью и яркостью даже не запускается даже вот так:
^F12::
rundll32.exe NvCpl.dll,dtcfg setbrightness 1 all 0
Return
==> This line does not contain a recognized action.
Specifically: rundll32.exe NvCpl.dll,dtcfg setbrightness 1 all 0
Что я не так делаю?