Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Изменение цветовой схемы по горячей клавише или кнопке 
Author Message
Batya



PostPosted: Wed Jul 25, 2007 11:31    Post subject: Reply with quote

Сделал на vbs с использованием TC Script Helper.
Сначала скрипт для сохранения текущей цветовой схемы:
Code:
'=========================================================================================
' Копирование секций [COLORS] и [Searches] из wincmd.ini, путь к которому передан
'   первым параметром, в ini-файл, имя которого передано вторым параметром.
'   Третьим параметром нужно передать название создаваемой схемы.
'   В ini-файле-приемнике секции сохраняются:
'   [COLORS] -> [{Имя схемы}] и [Searches] -> [Srch:{Имя схемы}]
'   Если в ini-файле-приемнике такие секции уже существует, они будут заменены.

' Пример вызова из TC:
' %COMMANDER_INI% %COMMANDER_PATH%\Utils\TCColPS\Presets.ini "Batya"
' ! Внимание ! Параметры с использованием переменных окружения необходимо указывать
'   в строке "Команда", а не в строке "Параметры".
'========================================================================================
Option Explicit

If WScript.Arguments.Count < 3 Then
  MsgBox "Неправильно заданы параметры!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  WScript.Quit
End If

Dim FSO, TCS, Ini1, Ini2, Name, Colors, Searches

Ini1 = WScript.Arguments(0)
Ini2 = WScript.Arguments(1)
Name = WScript.Arguments(2)

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(Ini1) Then
  MsgBox "Неправильно задан первый параметр - путь к wincmd.ini!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  Set FSO = Nothing
  WScript.Quit
End If
If Not FSO.FileExists(Ini2) Then
  MsgBox "Неправильно задан второй параметр - путь к ini-файлу-приемнику!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  Set FSO = Nothing
  WScript.Quit
End If
Set FSO = Nothing

Set TCS = CreateObject("TCScript.Helper")

Colors   = TCS.INIReadSection(Ini1, "COLORS"  )
Searches = TCS.INIReadSection(Ini1, "Searches")

TCS.INIWriteSection Ini2, Name          , Colors
TCS.INIWriteSection Ini2, "Srch:" & Name, Searches

Set TCS = Nothing
MsgBox "Операция завершена", _
  vbOKOnly + vbInformation, _
  "Копирование схемы настройки цветов TC"
WScript.Quit


Второй скрипт непосредственно для установки нужной схемы:
Code:
'=========================================================================================
' Копирование секций [COLORS] и [Searches] в wincmd.ini, путь к которому передан
'   первым параметром, из ini-файла, имя которого передано вторым параметром.
'   Третьим параметром нужно передать название копируемой схемы.
'   Соответствие секций ini-файла-источника секциям wincmd.ini:
'   [{Имя схемы}] -> [COLORS] и [Srch:{Имя схемы}] -> [Searches]

' Пример вызова из TC:
' %COMMANDER_INI% %COMMANDER_PATH%\Utils\TCColPS\Presets.ini "Batya"
' ! Внимание ! Параметры с использованием переменных окружения необходимо указывать
'   в строке "Команда", а не в строке "Параметры".
'========================================================================================
Option Explicit
Dim Exclusion
'=============== Изменяемые параметры ===================================================
' Параметры секции [COLORS], значения которых НЕ копируются
Exclusion = Array("InverseCursor", "BackColor", "ForeColor", "MarkColor", _
                  "CursorColor", "CursorText", "InverseSelection", "CompareText", _
                  "CompareTextSel", "CompareBinary", "CompareBinarySel", "BackColor2")
'========================================================================================

If WScript.Arguments.Count < 3 Then
  MsgBox "Неправильно заданы параметры!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  WScript.Quit
End If

Dim FSO, TCS, Ini1, Ini2, Name, Colors, Searches, i, DimExcl, ExclVal()
DimExcl = UBound(Exclusion)
ReDim ExclVal(DimExcl)

Ini1 = WScript.Arguments(0)
Ini2 = WScript.Arguments(1)
Name = WScript.Arguments(2)

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(Ini1) Then
  MsgBox "Неправильно задан первый параметр - путь к wincmd.ini!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  Set FSO = Nothing
  WScript.Quit
End If
If Not FSO.FileExists(Ini2) Then
  MsgBox "Неправильно задан второй параметр - путь к ini-файлу-приемнику!", _
    vbOKOnly + vbCritical, _
    "Копирование схемы настройки цветов TC"
  Set FSO = Nothing
  WScript.Quit
End If
Set FSO = Nothing

Set TCS = CreateObject("TCScript.Helper")

For i = LBound(Exclusion) To DimExcl
  ExclVal(i) = TCS.INIRead(Ini1, "COLORS", Exclusion(i), "")
Next

Colors   = TCS.INIReadSection(Ini2, Name          )
Searches = TCS.INIReadSection(Ini2, "Srch:" & Name)

If Len(Colors) > 0 Then
  TCS.INIWriteSection Ini1, "COLORS"  , Colors
End If
If Len(Searches) > 0 Then
  TCS.INIWriteSection Ini1, "Searches", Searches
End If

For i = LBound(Exclusion) To DimExcl
  If Len(ExclVal(i)) > 0 Then
    TCS.INIWrite Ini1, "COLORS", Exclusion(i), ExclVal(i)
  Else
    TCS.INIDelete Ini1, "COLORS", Exclusion(i)
  End If
Next

TCS.Pause = 0
TCS.SendCommand "cm_ColorConfig"
TCS.SendKeystroke "+{TAB 4} "
TCS.SendKeystroke "{ENTER}"
TCS.SendKeystroke "{TAB}"
TCS.SendKeystroke "{ENTER}"

Set TCS = Nothing
WScript.Quit
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group