LonerD

|
Posted: Thu Jun 05, 2014 03:29 Post subject: |
|
|
Flasher
Универсальности тут быть не может. Нельзя сделать единый скрипт, который бы работал без модификаций на любых Тоталах, потому как различаются названия ключей (номера ключей) и их значения. Потому можно сделать только варианты для частного случая. Задачи перетаскивания не было поставлено в изначальном вопросе. Нужно просто полностью отключать определённое правило в цветовой схеме, а если оно уже отключено - включить.
DoctorIkari
Набросал вот такой вариант для TC 8.51a.
Работа в старых версиях возможна, но не проверялась (всё зависит ).
Вместо ColorFilterX указать свой ключ с шаблоном поиска (или ключи если таковых несколько, потому и оставил фигурные скобки).
В скрипте предусмотрено определение битности Тотала, определение положения ini-файла настроек (в случае редиректа) скрытие всех операций (чтобы не мельтешили перед глазами). Кратковременное "моргание" окошка настроек и курсора (в некоторых случаях) побороть скорее всего не представляется возможным. За качество кода попрошу не выражаться.
В случае несрабатывания можно попробовать изменить значения команды SetKeyDelay и SetControlDelay.
Сохранить скрипт в текстовый файл с любым именем (например, Script.ahk). Скачать AutoHotkey, распаковать и запустить
Autohotkey.exe Script.ahk
(можно повесить на панель инструментов или сделать пользовательскую ем-комманду).
Code: | ;================================================================
; Вкл/выкл. подсвечивание файлов за датою
; Версия скрипта: 1.2
; Дата створення: 2014.06.05
; Автор скрипта: LonerD
;================================================================
#NoEnv
#NoTrayIcon
#SingleInstance ignore
SetKeyDelay, 50, 50
SetControlDelay, 20
if WinActive( "ahk_class TTOTAL_CMD" )
{
EnvGet, commander_path, commander_path
EnvGet, commander_ini, commander_ini
; Определяем редирект секции цветов
IniRead, RedirectColors, % commander_ini, Colors, RedirectSection, 0
Transform, ColorsINI, Deref, % (RedirectColors ? RedirectColors : commander_ini)
; Определяем битность ТС и задаём переменные
WinGet, TCHWND, ID, ahk_class TTOTAL_CMD
WinGet, TCControls, ControlList, ahk_id %TCHWND%
Loop, Parse, TCControls, `n, `r
{
if ((A_LoopField = "TMyListBox1") || (A_LoopField = "TMyListBox2"))
{
TCheckBox2 := "TCheckBox2"
TButton35 := "TButton35"
TButton37 := "TButton37"
break
}
else
{
TCheckBox2 := "Button5"
TButton35 := "Button14"
TButton37 := "Button16"
}
}
; Блокируем перерисовку окна
DllCall("LockWindowUpdate", "uint", TCHWND)
; Включаем-отключаем подсвечивание
IniRead, DateColor, % ColorsINI, Colors, ColorFilterX
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
DateColor := DateColor . " -Commented-Bebebe"
}
IniWrite, % DateColor, % ColorsINI, Colors, ColorFilterX
; Вызываем окно настроек, делаем его прозрачным и нажимаем кнопки
PostMessage, 0x433, 494,,, ahk_class TTOTAL_CMD
WinWait, ahk_class TDLGCONFIGALL
WinSet, Transparent, 0, ahk_class TDLGCONFIGALL
Sleep, 50
ControlFocus, % TCheckBox2, ahk_class TDLGCONFIGALL
ControlSend, % TCheckBox2, {Space}, ahk_class TDLGCONFIGALL
ControlFocus, % TButton35, ahk_class TDLGCONFIGALL
ControlSend, % TButton35, {Space}, ahk_class TDLGCONFIGALL
ControlFocus, % TCheckBox2, ahk_class TDLGCONFIGALL
ControlSend, % TCheckBox2, {Space}, ahk_class TDLGCONFIGALL
ControlFocus, % TButton35, ahk_class TDLGCONFIGALL
ControlSend, % TButton35, {Space}, ahk_class TDLGCONFIGALL
ControlFocus, % TButton37, ahk_class TDLGCONFIGALL
ControlSend, % TButton37, {Space}, ahk_class TDLGCONFIGALL
; Контрольная проверка
IfWinNotActive, ahk_class TTOTAL_CMD
{
ControlFocus, % TButton37, ahk_class TDLGCONFIGALL
ControlSend, % TButton37, {Space}, ahk_class TDLGCONFIGALL
}
; Разблокируем окно ТС
DllCall("LockWindowUpdate", "uint", 0)
}
Exit
;================================================================
|
Если имеется несколько ключей (например, два), ответственных за изменение раскраски даты, то заменяем фрагмент
Code: | IniRead, DateColor, % ColorsINI, Colors, ColorFilterX
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
DateColor := DateColor . " -Commented-Bebebe"
}
IniWrite, % DateColor, % ColorsINI, Colors, ColorFilterX |
на
Code: | IniRead, DateColor1, % ColorsINI, Colors, ColorFilterX
IniRead, DateColor2, % ColorsINI, Colors, ColorFilterY
StringReplace, DateColor, DateColor, %A_Space%-Commented-Bebebe, , UseErrorLevel
if ErrorLevel = 0
{
DateColor1 := DateColor1 . " -Commented-Bebebe"
DateColor2 := DateColor2 . " -Commented-Bebebe"
}
IniWrite, % DateColor1, % ColorsINI, Colors, ColorFilterX
IniWrite, % DateColor2, % ColorsINI, Colors, ColorFilterY |
, где ColorFilterX, ColorFilterY - имена ключей в вашем файле конфигурации.
Upd. Обновил. Слегка подчистил индусский код.
Upd2. Обновил оптять. Добавил автоопределение наличия редиректа секции ini-файла.
Upd3. Обновил снова. Теперь не нужно указывать значения ключа, ответственного за подсветку по дате, он просто комментируется. _________________ Windows 11 | TC DreamLair eternal pre-α
Last edited by LonerD on Fri Jun 06, 2014 02:19; edited 3 times in total |
|