Orion9
 
  
 
  | 
		
			
				 Posted: Fri Nov 22, 2024 13:43    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Ну, вроде как доделал...)
 
 
jensoto
 
Знаю, что вы не кодер и вам непросто разобраться в этой скриптовой джамба-мамбе, но с плагином Autorun по-другому не получится. Чтобы им пользоваться в полной мере, придется немного изучить основы программирования и скриптинга. И все же это необязательно, если есть готовые решения! Поэтому я постарался, чтобы все было максимально в завершенном виде, готовом сразу к применению.
 
 
Требуются все последние обновления плагина, которые можно найти на предыдущих страницах темы, в частности Autorun_Process.dll и Autorun_Runtime.dll.
 
 
Отдельный файл конфигурации Backdrop.aucfg необходимо подключить к основной кофигурации плагина autorun.cfg строкой Pragma, например: 
 
 	  | Code: | 	 		  Pragma Include %COMMANDER_PATH%\Ini\Autorun\Backdrop.aucfg  | 	  
 
 
Путь может быть любым. Содержимое файла:
 
  Backdrop.aucfg  	  | Code: | 	 		  # Ctrl+Shift+"+"    -    Повышение тонов
 
# Ctrl+Shift+"-"    -    Понижение тонов
 
# Ctrl+"+"       -    Автоповышение тонов
 
# Ctrl+"-"       -    Автопонижение тонов
 
# ESC          -    Выход из автоперебора
 
# Alt+"+"       -    Показ текущих значений
 
 
Pragma IncludeOnce
 
 
Global Pulsar = 0, BACKDROP_THREAD = 0, BackColor1 = 0, BackColor2 = 0, Previous1 = 0, Previous2 = 0
 
 
Global CF_NAME = "", CF_VALUE = -1, CF_KEY = 0, CF_COLOR_KEY = 0, WRITE_COLOR_MODE = 0, CL_KEY = "", CL_VALUE = -1, CL_SNAP = ""
 
 
Global CL_MousePosX = 0, CL_MousePosY = 0
 
 
# панель для запоминания
 
Global CL_BAR = %COMMANDER_PATH% & "\Bars\Backdrops.bar"
 
# путь к редактору
 
Global CL_AKEL4 = %COMMANDER_PATH% & "\Utilites\AkelPad\AkelPad.exe", CL_TCFS2 = ""
 
 
# путь к TCFS2 для отправки сообщений
 
Set /EV- CL_TCFS2 "%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe"
 
 
# повышение/понижение тонов
 
SetHotkeyAction /K:C /K:S /V:187 /R /DM SetBackGround 1
 
SetHotkeyAction /K:C /K:S /V:189 /R /DM SetBackGround 2
 
 
# авто
 
SetHotkeyAction /K:C /V:187 SetPulsar 1
 
SetHotkeyAction /K:C /V:189 SetPulsar 2
 
 
# показать текущие значения
 
SetHotkeyAction /K:A /V:187 ShowBackColor 1000
 
 
# 70000-70050
 
 
# первоначальные значения цветов
 
# 0 - запомнить 
 
# 1 - открыть в редакторе
 
RegisterCommand 70000 "InitialColors" 1
 
 
# регистрация команды для вызова из кнопки (пункта меню)
 
RegisterCommand 70001 "AutoBackdrop"
 
 
# запоминание текущего фона
 
RegisterCommand 70002 "BackColorBar"
 
 
# создание и отображение меню
 
RegisterCommand 70003 "ShowBackdropMenu"
 
 
# ключи секции [Color]
 
RegisterCommand 70004 "ColorItem" "Backdrop"
 
RegisterCommand 70005 "ColorItem" "MarkColor"
 
RegisterCommand 70006 "ColorItem" "CursorColor"
 
RegisterCommand 70007 "ColorItem" "ForeColor"
 
RegisterCommand 70008 "ColorItem" "CursorText"
 
RegisterCommand 70009 "ColorItem" "BackColor"
 
RegisterCommand 70010 "ColorItem" "BackColor2"
 
 
# ключи ColorFilter секции [Color]
 
RegisterCommand 70011 "ColorFilterItem" 1
 
RegisterCommand 70012 "ColorFilterItem" 2
 
RegisterCommand 70013 "ColorFilterItem" 3
 
RegisterCommand 70014 "ColorFilterItem" 4
 
RegisterCommand 70015 "ColorFilterItem" 5
 
RegisterCommand 70016 "ColorFilterItem" 6
 
RegisterCommand 70017 "ColorFilterItem" 7
 
RegisterCommand 70018 "ColorFilterItem" 8
 
RegisterCommand 70019 "ColorFilterItem" 9
 
RegisterCommand 70020 "ColorFilterItem" 10
 
RegisterCommand 70021 "ColorFilterItem" 11
 
RegisterCommand 70022 "ColorFilterItem" 12
 
RegisterCommand 70023 "ColorFilterItem" 13
 
RegisterCommand 70024 "ColorFilterItem" 14
 
RegisterCommand 70025 "ColorFilterItem" 15
 
 
 
# прием сообщения окну "установить значения фона"
 
SetMessageAction /P "BackColorsMessage" SetBackColors
 
 
# значения фона при старте ТС
 
if BackColor1 = 0 or BackColor2 = 0 then
 
   IniRead /R BackColor1 %COMMANDER_INI% "Colors" "BackColor" -1
 
   IniRead /R BackColor2 %COMMANDER_INI% "Colors" "BackColor2" -1
 
endif
 
 
Func InitialColors(lParam, lMode)
 
Local i = 0, cf, txt
 
 
   If lMode = 1 Then
 
      # вызов пункта меню для показа значений
 
      OpenInTextEditor(CL_SNAP)
 
      Return 
 
   Endif
 
   
 
   # снимок первоначальных значений 
 
   CL_SNAP = ";значения секции при запуске ТС" & auCRLF
 
   CL_SNAP = CL_SNAP & "[Colors]" & auCRLF
 
   
 
   IniRead /R txt %COMMANDER_INI% "Colors" "ForeColor" -1   
 
   CL_SNAP = CL_SNAP & "ForeColor=" & txt & auCRLF   
 
   
 
   IniRead /R txt %COMMANDER_INI% "Colors" "BackColor" -1
 
   CL_SNAP = CL_SNAP & "BackColor=" & txt & auCRLF
 
   
 
   IniRead /R txt %COMMANDER_INI% "Colors" "BackColor2" -1   
 
   CL_SNAP = CL_SNAP & "BackColor2=" & txt & auCRLF
 
   
 
   IniRead /R txt %COMMANDER_INI% "Colors" "MarkColor" -1   
 
   CL_SNAP = CL_SNAP & "MarkColor=" & txt & auCRLF
 
   
 
   IniRead /R txt %COMMANDER_INI% "Colors" "CursorColor" -1   
 
   CL_SNAP = CL_SNAP & "CursorColor=" & txt & auCRLF
 
  
 
   IniRead /R txt %COMMANDER_INI% "Colors" "CursorText" -1   
 
   CL_SNAP = CL_SNAP & "CursorText=" & txt & auCRLF            
 
 
   While i < 100
 
   
 
      i = i + 1
 
   
 
      IniRead /R cf %COMMANDER_INI% "Colors" %"'ColorFilter' & %i%" "stop"
 
      If cf="stop" Then Break
 
      
 
      IniRead /R txt %COMMANDER_INI% "Colors" %"'ColorFilter' & %i% & 'Color'"
 
      CL_SNAP = CL_SNAP & cf & "=" & txt & auCRLF            
 
               
 
   Wend
 
   
 
EndFunc
 
  
 
Func AutoBackdrop(lParam)
 
Static StartCount = 0
 
 
   # удержание Ctrl+Shift
 
   # повышение тона на одну единицу после нажатия
 
   # на кнопку, выбора пункта меню или вызова другим способом
 
   If IsPressed (0x10) And IsPressed (0x11) Then Return SetBackGround(1)
 
   
 
   # удержание Ctrl
 
   # понижние тона на одну единицу
 
   If IsPressed (0x11) Then Return SetBackGround(2)
 
   
 
   # удержание Alt+Win
 
   # вернуть предыдущий фон
 
   If IsPressed (0x12) And IsPressed (0x5B) Then
 
      if Previous1 > 0 or Previous2 > 0 then WriteBackground(Previous1, Previous2)
 
      Return 
 
   endif
 
   
 
   # удержание Alt+Shift
 
   # скопировать в буфер код кнопки текущего фона  
 
   If IsPressed (0x12) And IsPressed (0x10) Then
 
      IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
 
      IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1
 
      ClipPut("TOTALCMD#BAR#DATA" & auCRLF & CL_TCFS2 & auCRLF & _
 
              "/u- /ef ""msg(regmsg(BackColorsMessage), " & bkg1 & ", " & bkg2 & ")""" & auCRLF & "%COMMANDER_EXE%")
 
      ShowBackHint("Кнопка с фоном скопирована")
 
      Return
 
   Endif
 
   
 
   # удержание Alt
 
   # вернуть первоначальный фон TC
 
   If IsPressed (0x12) Then Return WriteBackground(BackColor1, BackColor2)
 
   
 
   # удержание Shift
 
   # показ текущих значений фона
 
   If IsPressed (0x10) Then Return ShowBackColor()
 
   
 
   # поток уже запущен
 
   if BACKDROP_THREAD > 0 then
 
      BACKDROP_THREAD = 0
 
   else
 
      If StartCount = 0 Then InitialColors(0, 0)
 
      BACKDROP_THREAD = 1
 
      # при старте парное значение фона по умолчанию
 
      ColorItem(1, "Backdrop")
 
      RunThread ThreadBackdrop
 
      StartCount = StartCount + 1
 
      SetHintParam("ShowHint", "Font", 10, "Tahoma")
 
      SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
 
      SetHintParam("ShowHint", "Text", 0xFFFFFF)
 
      #SetHintParam("ShowHint", "Frame", 0xFFFFFF)       
 
      ShowHint("Отслеживание значений запущено." & auLF & "Значения в ColorMania / буфере будут применятся к фону панелей.")
 
      Sleep(2000)
 
      WinSetState(23)
 
      SetHintParam("ShowHint", "Reload")      
 
   endif
 
         
 
EndFunc
 
 
# прием сообщения
 
Func SetBackColors(hWnd, uMsg, wParam, lParam)
 
     WriteBackground(wParam, lParam)     
 
EndFunc
 
 
# запись парных значений
 
Func WriteBackground(Color1, Color2)
 
     IniWrite /R %COMMANDER_INI% "Colors" "BackColor" %Color1%
 
     IniWrite /R %COMMANDER_INI% "Colors" "BackColor2" %Color2%
 
     # обновление панелей
 
     SendCommand 2957
 
     SendCommand 2957
 
EndFunc
 
 
# запись одиночных значений
 
Func WriteSingleColor(KeyName, KeyValue)
 
     IniWrite /R %COMMANDER_INI% "Colors" %"%KeyName%" %KeyValue%
 
     SendCommand 2957
 
     SendCommand 2957
 
EndFunc
 
 
# функция работает в отдельном потоке
 
Func ThreadBackdrop()
 
Local h = 0, max = 1*255 + 256*255 + 65536*255, clip, last = 0, w = 0, source
 
 
   # предыдущие значения фона
 
   IniRead /R Previous1 %COMMANDER_INI% "Colors" "BackColor" -1
 
   IniRead /R Previous2 %COMMANDER_INI% "Colors" "BackColor2" -1
 
 
   While BACKDROP_THREAD = 1
 
       
 
       h = WinFind(0, "TfrmColorPick")
 
       if h > 0 and IsPressed (0x11) then
 
          # текст из ColorMania 
 
          # при зажатом CTRL 
 
          clip = WinGetText(WinFind(h, "TEdit", 1))
 
          source = "ColorMania"
 
       else
 
          # первая строка в буфере 
 
          clip = StrPart(ClipGet(), auLF, 1)
 
          source = "Clipboard"            
 
       endif
 
          
 
       if IsInt(clip) then
 
          # новое число в диапазоне
 
          if clip >= 0 and clip <= max and not (clip = last) then
 
          
 
             WinSetText("Applying color value: " & clip)
 
             
 
             If WRITE_COLOR_MODE = 0 Then
 
                WriteBackground(clip, clip)
 
             Else
 
                WriteSingleColor(CL_KEY, clip)
 
             Endif
 
             w = w + 1
 
             last = clip
 
             Sleep(400)
 
 
          endif
 
       endif
 
       
 
       Sleep(250)
 
       WinSetText("Backdrop thread is watching for " & source & " values for " & CF_NAME & "")
 
       
 
   Wend
 
   BACKDROP_THREAD = 0
 
   WinSetText("")
 
   
 
   SetHintParam("ShowHint", "Font", 10, "Tahoma")
 
   SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
 
   SetHintParam("ShowHint", "Text", 0xFFFFFF)   
 
   ShowHint("Отслеживание остановлено" & auLF & "Применений фона: " & w)
 
   Sleep(2000)
 
   WinSetState(23)
 
   SetHintParam("ShowHint", "Reload")   
 
EndFunc
 
 
Func SetBackGround(nParam)
 
Local bkg1, bkg2, max = 1*255 + 256*255 + 65536*255
 
 
   # при автоизменении потолок чуть меньше
 
   # попытка предотвратить переход в серые тона   
 
   if Pulsar = 1 then max = 1*245 + 256*245 + 65536*245
 
       
 
   IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
 
   IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1
 
   
 
   If Not IsInt(bkg1) Or Not IsInt(bkg2) Then
 
      MsgBox("Нечисловые значения цвета фона: " _ 
 
              & auLF & auLF & "BackColor=" & bkg1 & auLF & "BackColor2=" & bkg2 _
 
              & auLF & auLF & "ESC - Отмена операции")
 
      Return
 
   Endif
 
   
 
   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
 
   
 
   WriteBackground(bkg1, bkg2)
 
 
EndFunc
 
 
Func SetPulsar(nParam)
 
local a, b, s, l
 
static t = 0
 
   
 
   if Pulsar = 1 then 
 
      Pulsar = 0
 
      Return
 
   endif
 
   
 
    Pulsar = 1
 
   
 
   if nParam = 1 then 
 
      a = 1
 
      b = 2
 
      s = 1
 
   else
 
      a = 2
 
      b = 1
 
      s = -1
 
   endif
 
   
 
   IniRead /R Previous1 %COMMANDER_INI% "Colors" "BackColor" -1
 
   IniRead /R Previous2 %COMMANDER_INI% "Colors" "BackColor2" -1
 
  
 
   While Pulsar = 1
 
   
 
      For j = a To b step s
 
      
 
         For i = 1 To 75
 
             
 
             SetBackGround(j)
 
             # значение можно увеличить
 
             # если мерцает только одна панель
 
             Sleep(25)
 
             l = l + 1
 
             t = t + 1
 
             
 
             if Pulsar = 0 then Break
 
             
 
             If IsPressed (0x1B) Then
 
                Pulsar = 0
 
                Break
 
             Endif
 
             
 
         Next
 
         
 
         if Pulsar = 0 then Break
 
      Next
 
      
 
   Wend
 
   # показать статистику, если выход по ESC
 
   If IsPressed (0x1B) Then
 
      ShowHint("Изменений тонов: " & l & auCRLF & "Всего изменений: " & t)
 
   Endif    
 
EndFunc 
 
 
Func ShowBackColor(lDelay = 300)
 
Local txt, bkg1, bkg2, max = 1*255 + 256*255 + 65536*255
 
       
 
   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
 
 
   # обратный расчет
 
   blue = floor(bkg1/65536)
 
   green = bkg1 - (blue * 65536)
 
   green = floor(green/256)
 
   red = bkg1 - (blue * 65536) - (green * 256)
 
   
 
   txt = "Фон 1" & auLF & "Красный: " & red & auLF & "Зелёный: " & green & auLF & "Синий: " & blue & auLF & "Значение: " & bkg1
 
   txt = txt & auLF & "" & auLF
 
   
 
   blue = floor(bkg2/65536)
 
   green = bkg2 - (blue * 65536)
 
   green = floor(green/256)
 
   red = bkg2 - (blue * 65536) - (green * 256)
 
   
 
   txt = txt & "Фон 2" & auLF & "Красный: " & red & auLF & "Зелёный: " & green & auLF & "Синий: " & blue & auLF & "Значение: " & bkg2
 
   ShowHint(txt)
 
EndFunc
 
 
Func BackColorBar(lParam)
 
Local i, bkg1, bkg2, bar = CL_BAR
 
       
 
   If Not FileExist(bar) Then   
 
      MsgBox("Файл не существует " & bar, "Backdrop")
 
      Return
 
   Endif
 
   
 
   IniRead i %bar% "Buttonbar" "Buttoncount" 0
 
   
 
   If Not IsInt(i) or i < 1 Then
 
      MsgBox("Ошибка Buttoncount < 1 " & auCRLF & bar, "Backdrop")
 
      Return
 
   Endif
 
   
 
   IniRead /R bkg1 %COMMANDER_INI% "Colors" "BackColor" -1
 
   IniRead /R bkg2 %COMMANDER_INI% "Colors" "BackColor2" -1   
 
   
 
   i = i + 1
 
  
 
   IniWrite /EV- %bar% "Buttonbar" %"'Button' & %i%" "%COMMANDER_EXE%"
 
   IniWrite %bar% "Buttonbar" %"'Cmd' & %i%"    "%CL_TCFS2%"
 
   IniWrite %bar% "Buttonbar" %"'Param' & %i%"  '"/u- /ef "msg(regmsg(BackColorsMessage), %bkg1%, %bkg2%)"'      
 
   IniWrite %bar% "Buttonbar" %"'Menu' & %i%"   "Фон %bkg1%, %bkg2%"   
 
          
 
   IniWrite %bar% "Buttonbar" "Buttoncount" %i%
 
   
 
   ShowBackHint("Фон панелей сохранен")
 
   
 
EndFunc
 
 
Func ShowBackHint(BackHint, PosX = false)
 
 
   SetHintParam("ShowHint", "Font", 10, "Arial")
 
   SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
 
   SetHintParam("ShowHint", "Text", 0xFFFFFF)
 
   
 
   If PosX Then
 
      ShowHint(BackHint, CL_MousePosX, CL_MousePosY)   
 
   Else
 
      ShowHint(BackHint)
 
   Endif
 
   
 
   Sleep(1000)
 
   WinSetState(23)
 
   
 
   SetHintParam("ShowHint", "Reload")
 
   
 
EndFunc
 
 
Func CreateBackdropMenu()
 
Local i = 0, cf, txt
 
 
   txt = txt & 'MENUITEM "Фон\tBackdrop", 70004' & auCRLF
 
   txt = txt & 'MENUITEM SEPARATOR' & auCRLF
 
   txt = txt & 'MENUITEM "Выделение\tMarkColor", 70005' & auCRLF
 
   txt = txt & 'MENUITEM "Курсор\tCursorColor", 70006' & auCRLF
 
   txt = txt & 'MENUITEM "Текст\tForeColor", 70007' & auCRLF
 
   txt = txt & 'MENUITEM "Текст под курсором\tCursorText", 70008' & auCRLF
 
   txt = txt & 'MENUITEM "Фон 1\tBackColor", 70009' & auCRLF
 
   txt = txt & 'MENUITEM "Фон 2\tBackColor2", 70010' & auCRLF
 
   txt = txt & 'MENUITEM SEPARATOR' & auCRLF   
 
 
   While i < 100
 
   
 
      i = i + 1
 
   
 
      IniRead /R cf %COMMANDER_INI% "Colors" %"'ColorFilter' & %i%" "stop"
 
      If cf="stop" Then Break
 
                       
 
      txt = txt & 'MENUITEM "' & cf & '", 700' & 10+i & auCRLF
 
      
 
   Wend
 
   
 
   txt = txt & 'MENUITEM SEPARATOR' & auCRLF   
 
   txt = txt & 'MENUITEM "Первоначальные значения секции [Colors]", 70000'
 
   
 
   Return txt
 
EndFunc
 
 
Func ShowBackdropMenu(lParam)
 
 
    # координаты кнопки вызова меню
 
    MouseGetPos("CL_MousePosX", "CL_MousePosY")
 
    ShowPopupMenu /D /F "CreateBackdropMenu"
 
    
 
EndFunc
 
 
Func ColorFilterItem(lParam, wItem)
 
 
    Local key1, key2, val1, val2
 
    
 
    If BACKDROP_THREAD = 0 Then
 
       ShowHint("Отслеживание цвета не запущено")
 
       Return
 
    Endif
 
 
    key1 = "ColorFilter" & wItem
 
    key2 = key1 & "Color"
 
    
 
    IniRead /R val1 %COMMANDER_INI% "Colors" %"%key1%" ""
 
    IniRead /R val2 %COMMANDER_INI% "Colors" %"%key2%" ""
 
    
 
    # формат "ColorFilter1"
 
    CF_KEY = key1
 
    # формат "ColorFilter1Color"
 
    CF_COLOR_KEY = key2
 
    # формат "Имя фильтра", например "Autorun"    
 
    CF_NAME = val1
 
    # формат "Цвет фильтра", например "65535"
 
    CF_VALUE = val2
 
 
    # глобальные значения для потока    
 
    CL_KEY = CF_COLOR_KEY
 
    CL_VALUE = CF_VALUE
 
 
    # режим записи "Одиночный ключ"      
 
    WRITE_COLOR_MODE = 1
 
 
    ColorItemChange(CL_VALUE)    
 
    ShowBackHint("Цвет типа выбран" & auCR & "Значения будут применятся к " & CF_NAME, false)
 
    
 
EndFunc
 
 
Func ColorItem(lParam, sItem)
 
Local key, val
 
 
    If BACKDROP_THREAD = 0 Then
 
       ShowHint("Отслеживание цвета не запущено")
 
       Return
 
    Endif
 
    
 
    # парный однотонный фон BackColor = BackColor2
 
    If sItem = "Backdrop" Then
 
       # режим записи "Парный ключ"       
 
       WRITE_COLOR_MODE = 0
 
       # Имя для потока
 
       CF_NAME = "Backdrop"
 
       IniRead /R val %COMMANDER_INI% "Colors" "BackColor" -1
 
       ClipPut(val)
 
       # запуск из меню
 
       If lParam = 0 Then
 
          ShowBackHint("Цвет типа выбран" & auCR & "Значения будут применятся к Backdrop")                     
 
       Endif   
 
       Return      
 
    Endif
 
    
 
    key = sItem
 
    IniRead /R val %COMMANDER_INI% "Colors" %"%key%" ""
 
 
    # глобальные значения для потока        
 
    CL_KEY = key
 
    CL_VALUE = val
 
    CF_NAME = key
 
    WRITE_COLOR_MODE = 1
 
 
    ColorItemChange(CL_VALUE)
 
    ShowBackHint("Цвет типа выбран" & auCR & "Значения будут применятся к " & key, false)
 
    
 
EndFunc
 
 
# не применять изменения цвета при смене элемента
 
Func ColorItemChange(ColorText)
 
Local h
 
    # очистка буфера при смене элемента
 
    ClipPut(ColorText) 
 
    h = WinFind(0, "TfrmColorPick")
 
    if h > 0 then
 
       # синхронизация текста   
 
       WinSetText(ColorText, WinFind(h, "TEdit", 1))         
 
    endif
 
EndFunc
 
 
Func OpenInTextEditor(Text)
 
Local h = 0
 
 
    ClipPut(Text)
 
    
 
    h = WinFind(0, "AkelPad4")
 
    If h > 0 Then
 
       ShellExec /SW_SHOWNORMAL %CL_AKEL4% '/Command(4101) /Command(4155)'
 
       Return
 
    Endif
 
    
 
    If Not FileExist(CL_AKEL4) Then 
 
       ShowHint("AkelPad не найден " & CL_AKEL4 & "Текст значений скопирован в буфер.")
 
    Else
 
       ShellExec /SW_SHOWNORMAL %CL_AKEL4% ' /Command(4155)'       
 
    Endif 
 
    
 
EndFunc  | 	 
  
 
На панели должно быть две кнопки: одна - для запуска отслеживания, другая - для выбора элемента из меню.
 
 
  Hidden text  	  | Code: | 	 		  TOTALCMD#BAR#DATA
 
70001
 
 
%COMMANDER_EXE%
 
Запустить/Остановить|Отслеживание цвета в буфере| |Ctrl - Понижение тонов|Ctrl+Shift - Повышение тонов|Alt - Вернуть первоначальный|Alt+Win - Вернуть предыдущий| |Shift - Показать значения|Alt+Shift - Скопировать в буфер
 
 
0
 
70001
 
  | 	 
  
 
  Hidden text  	  | Code: | 	 		  TOTALCMD#BAR#DATA
 
70003
 
 
%COMMANDER_EXE%
 
Выбор цвета для остлеживания в буфере
 
 
 
70003
 
  | 	 
  
 
Клавиши-модификаторы для первой кнопки указаны в ее подсказке. При нажатии на первую кнопку запускается процесс слежения за буфером (проверка буфера 4 раза в секунду). Если в буфере находится десятичное число, оно применяется к цвету активного элемента, выбранного для слежения (этот элемент можно выбрать из меню второй кнопки). По-умолчанию при запуске первым элементом для отслеживания становится сам фон панелей, т.е. два его значения (фон1 и фон2), которые при равенстве делают фон однотонным. Чтобы пользоваться с комфортом, понадобится утилита ColorMania, в которой необходимо выбрать формат цвета "Powerbuilder". При удержании CTRL значения из ColorMania применяются к настройкам ТС в реальном времени. При отпускании CTRL - значения снова берутся из буфера. Это дает возможность примеривать цвета из ColorMania на лету оценивая результат, который не применится до тех пор, пока не будет нажата кнопка "Copy", копирующая значение ColorMania в буфер. Если что-то пойдет не так, есть пункт "Первоначальные значения секции [Colors]", который откроет редактор со значениями цветов, установленных во время запуска ТС. Можно просто скопировать в буфер нужно значение, и оно снова применится к настройкам.
 
 
Для удобства сохранения цветов фона есть отдельная панель, которую можно использовать в виде меню как третью кнопку. На панеле есть команда "Сохранить фон", которая, соответственно, сохраняет текущий фон панели и добавляет его к самой себе. Пример такой панели:
 
 
  Backdrops.bar  	  | Code: | 	 		  [Buttonbar]
 
Buttoncount=11
 
button1=wcmicons.dll,15
 
cmd1=%COMMANDER_PATH%\Bars\Main.bar
 
iconic1=0
 
button2=%COMMANDER_EXE%
 
cmd2=70002
 
iconic2=0
 
menu2=Сохранить фон
 
button3=
 
iconic3=0
 
button4=%COMMANDER_EXE%
 
cmd4=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
param4=/u- /ef "msg(regmsg(BackColorsMessage), 8158332, 8158332)
 
iconic4=0
 
menu4=Избранный фон 1
 
button5=%COMMANDER_EXE%
 
cmd5=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
param5=/u- /ef "msg(regmsg(BackColorsMessage), 9272934, 9272934)
 
iconic5=0
 
menu5=Избранный фон 2
 
button6=
 
iconic6=0
 
button7=%COMMANDER_EXE%
 
cmd7=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
param7=/u- /ef "msg(regmsg(BackColorsMessage), 9211020, 9211020)
 
iconic7=0
 
menu7=Фон 9211020, 9211020
 
button8=%COMMANDER_EXE%
 
cmd8=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
param8=/u- /ef "msg(regmsg(BackColorsMessage), 8421230, 8421230)
 
iconic8=0
 
menu8=Фон 8421230, 8421230
 
button9=%COMMANDER_EXE%
 
cmd9=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
param9=/u- /ef "msg(regmsg(BackColorsMessage), 9865603, 9865603)
 
iconic9=0
 
menu9=Фон 9865603, 9865603
 
Button10=%COMMANDER_EXE%
 
Cmd10=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
Param10="/u- /ef "msg(regmsg(BackColorsMessage), 6316128, 6316128)"
 
Menu10=Фон 6316128, 6316128
 
Button11=%COMMANDER_EXE%
 
Cmd11=%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
 
Param11="/u- /ef "msg(regmsg(BackColorsMessage), 7497811, 7497811)"
 
Menu11=Фон 7497811, 7497811
 
  | 	 
  
 
Чтобы все заработало, необходимо указать корректные пути к этой панели, утилите TCFS2 и AkelPad, которые, конечно, могут и будут отличаться от ваших. Делается это в заголовке (начале) файла Backdrop.aucfg.
 
 
Ну вот и все. Пользуйтесь на здоровье! )
 
 
  Disclaimer Разработка не призвана полностью заменить встроенный функционал ТС. За порчу ваших цветов я не отвечаю      | 
			 
		  |