Програмная регулировка яркости монитора
Програмная регулировка яркости монитора
Програмная регулировка яркости монитора unit unit1; interface uses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls; type tform1 = class(tform) button1: tbutton; button2: tbutton; procedure button1click(sender: tobject); procedure button2click(sender: tobject); procedure formcreate(sender: tobject); procedure formdestroy(sender: tobject); private { private declarations } public { public declarations } end; var form1: tform1; implementation {$r *.dfm} type tramparray=array[0..2] of array[byte] of word; // массив для хранения таблиц гамма-коррекции (gamma ramp) var origramparray:tramparray; // текущие значения gamma ramp // Ф-ция изменения яркости. Чем больше wbrightness, тем больше яркость function setbrightness(wbrightness:word):boolean; var ramparray:tramparray; i, value:integer; dc:hdc; begin for i:=0 to maxbyte do begin value := i * (wbrightness + 128); if (value > maxword) then value := maxword; ramparray[0][i] := value; ramparray[1][i] := value; ramparray[2][i] := value; end; dc:=getdc(0); try result:= setdevicegammaramp(dc,ramparray) finally releasedc(0,dc) end end; // cохраняем текущие значения gamma ramp procedure tform1.formcreate(sender: tobject); var dc:hdc; begin dc:=getdc(0); try getdevicegammaramp(dc,origramparray) finally releasedc(0,dc) end end; // Меняем яркость procedure tform1.button1click(sender: tobject); begin setbrightness(64) end; // Восстанавливаем gamma ramp procedure tform1.button2click(sender: tobject); var dc:hdc; begin dc:=getdc(0); try setdevicegammaramp(dc,origramparray) finally releasedc(0,dc) end end; procedure tform1.formdestroy(sender: tobject); begin button2click(button2) end; end.