Single Post |
Topic: Autorun |
Author |
Message |
Orion9

|
Posted: Mon Nov 11, 2024 01:15 Post subject: |
|
|
Loopback wrote: | Да, это проблема в WinGetText, использованный там GetWindowText не может получать текст контролов другого приложения. Исправлю. |
Было бы хорошо: можно было бы сразу считывать и применять значения.
Но и сейчас с кнопкой "Copy" неплохо работает. Довел до более-менее пригодного состояния в отдельном модуле:
 Backdrop.aucfg Code: | # Ctrl+Shift+"+" - Добавить яркость
# Ctrl+Shift+"-" - Убавить яркость
# Ctrl+"+" - Запуск пульсирования
# Ctrl+"-" - Остановка пульсирования
Global Pulsar = 0, BACKDROP_THREAD = 0, Previous1 = 0, Previous2 = 0
SetHotkeyAction /K:C /K:S /V:187 SetBackGround 1
SetHotkeyAction /K:C /K:S /V:189 SetBackGround 2
SetHotkeyAction /K:C /V:187 SetPulsar 1
SetHotkeyAction /K:C /V:189 SetPulsar 0
RegisterCommand 70001 "AutoBackdrop"
if Previous1 = 0 or Previous2 = 0 then
IniRead /R Previous1 %COMMANDER_INI% "Colors" "BackColor" -1
IniRead /R Previous2 %COMMANDER_INI% "Colors" "BackColor2" -1
endif
Func AutoBackdrop(lParam)
If IsPressed (0x10) And IsPressed (0x11) Then Return SetBackGround(1) # Ctrl+Shift+Click() - Добавить яркость
If IsPressed (0x11) Then Return SetBackGround(2) # Ctrl+Click() - Убавить яркость
If IsPressed (0x12) Then # Altt+Click() - Вернуть предыдущий фон
if Previous1 > 0 or Previous2 > 0 then
IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %Previous1%
IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %Previous2%
SendCommand 2957
SendCommand 2957
endif
Return
endif
if BACKDROP_THREAD > 0 then # поток уже запущен
BACKDROP_THREAD = 0
else
BACKDROP_THREAD = 1
RunThread ThreadBackdrop
MsgBox("Отслеживание буфера запущено." & auLF & auLF & "Значения в буфере будут применятся к фону панелей.")
endif
EndFunc
Func ThreadBackdrop()
Local h = 0, max = 1*255 + 256*255 + 65536*255, clip, last = 0
IniRead /R Previous1 %COMMANDER_INI% "Colors" "BackColor" -1 # старые значения перед циклом
IniRead /R Previous2 %COMMANDER_INI% "Colors" "BackColor2" -1
While BACKDROP_THREAD = 1
clip = StrPart(ClipGet(), auLF, 1) # первая строка в буфере
if IsInt(clip) then
if clip > 0 and clip <= max and not (clip = last) then # число в диапазоне
WinSetText("Applying background value: " & clip)
IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %clip%
IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %clip%
SendCommand 2957
SendCommand 2957
last = clip
Sleep(300)
endif
endif
Sleep(250)
WinSetText("BACKDROP_THREAD is running...")
Wend
BACKDROP_THREAD = 0
MsgBox("Отслеживание буфера завершено")
EndFunc
Func SetBackGround(nParam)
Local bkg1, bkg2, max = 1*255 + 256*255 + 65536*255
if Pulsar = 1 then max = 1*235 + 256*235 + 65536*235 # при пульсировании потолок чуть меньше
IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1
if bkg1 = -1 then bkg1 = max
if bkg2 = -1 then bkg2 = max
if nParam = 1 then
bkg1 = bkg1 + 1 + 256 + 65536
bkg2 = bkg2 + 1 + 256 + 65536
else
bkg1 = bkg1 - 1 - 256 - 65536
bkg2 = bkg2 - 1 - 256 - 65536
endif
if bkg1 > max then bkg1 = bkg1 - 1 - 256 - 65536
if bkg2 > max then bkg2 = bkg2 - 1 - 256 - 65536
if bkg1 < -1 then bkg1 = max
if bkg2 < -1 then bkg2 = max
IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %bkg1%
IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %bkg2%
SendCommand 2957
SendCommand 2957
EndFunc
Func SetPulsar(nParam)
if nParam = 1 and Pulsar = 1 then Return # цикл уже запущен
Pulsar = nParam
While Pulsar = 1
For j = 1 To 2
For i = 1 To 75
SetBackGround(j)
Sleep(25)
if Pulsar = 0 then Return
Next
Next
Wend
EndFunc |
 Кнопка Code: | TOTALCMD#BAR#DATA
70001
%COMMANDER_PATH%\Utilites\ColorMania\ColorMania.exe
Включить/Выключить|Отслеживание в буфере цвета фона|Ctrl - Добавить яркость|Ctrl+Shift - Убавить яркость|Alt - Вернуть предыдущий
70001
|
Все как и раньше, но теперь есть управление через кнопку + статус в заголовке (но тут придется самостоятельно возвращать предыдущее значение заголовка отдельной парой строк, если это требуется). Скрипт после запуска следит за буфером и ждет численного значения, которое применяется в качестве фона. Удобно использовать со сторонними утилитами, например с ColorMania. Можно отдельно повышать или уменьшать тон фона комбинациями клавиш или нажатием на кнопку с клавишами-модификаторами. Пульсар оказался, кстати, не таким уж и бесполезным, наоборот - наглядно демонстрирует градацию тонов. Но работает не так совершенно и может уходить в "серую зону"
Потестировать как следут времени не было, т.ч. могут быть косяки. Но вот поиграться с выбором цвета фона, как в былые времена, желания прибавилось
P.S.
Тут еще возникла необходимость автоматического закрытия хинта через переод времени. Поммню, мы делали задержку Delay, может сделать параметр, который будет скрывать подсказку автоматически? |
|
|
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|