Orion9

|
Posted: Sun Nov 10, 2024 14:21 Post subject: |
|
|
Monarch-LFV
Можно и монитора. Но я, наверно, не совсем точно выразился. Речь скорее не о яркости, а о светлости. И только фона панелей, а не всего экрана. Например, когда ищешь новый универсальный цвет, чтобы можно было его тонко подстраивать на лету, сразу видя все изменения на панелях в реальном времени, а не после закрытия диалоговых окон и кликов на окнопки "OK" или "Применить".
Сейчас поэксперементировал с новый фишкой на это счет - при помощи ColorMania быстро примеривать фон на панелях.
https://www.blacksunsoftware.com/colormania.html
Это очень очень грубый код, но он работает.
 Hidden text Code: | SetHotkeyAction /K:C /V:187 FindWindow 1
SetHotkeyAction /K:C /V:189 FindWindow 0
Global WinWatch = 0
Func FindWindow(nParam)
Local h = 0, max = 1*255 + 256*255 + 65536*255, upd = 1, clip
# отслеживание уже запущено
if nParam = 1 and WinWatch = 1 then Return
WinWatch = nParam
While WinWatch = 1
clip = StrPart(ClipGet(), auLF, 1)
if IsInt(clip) then
if clip > 0 and clip <= max then
#WinSetText(clip)
IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %clip%
IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %clip%
If upd = 1 Then
SendCommand 2957
SendCommand 2957
EndIf
endif
endif
Sleep(250)
if WinWatch = 0 then Return
Wend
EndFunc
|
Скрипт отслеживает буфер обмена, и если в нем находится целое значение попадающее в диапазон цветов фона, он его применяет. В ColorMania нужно выбрать формат Powerbuilder, который подходит для ТС, затем выбрать нужный цвет и нажать "Copy". Скрипт перехватить в буфере число и применит его. Повторю, что это очень грубый и сырой код, который еще нужно дорабатывать и дорабатывать, доделав к нем кучу проверок и защиту от лишней и некорректой записи, а также надлежащий старт/стоп и статус.
Хотел попутно спросить у разработчика. А как получить значение с контрола в ColorMania, где хранится значени цвета? Хэндлы все получаются как надо, а вот текст не вытягивается:
Code: | h = WinFind(0, "TfrmColorPick")
if h > 0 then
c = WinFind(h, "TEdit", 1)
MsgBox(WinGetText(c))
endif |
|
|