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
HA3APET



PostPosted: Tue Mar 22, 2011 10:34    Post subject: Reply with quote

Code:
' Переименование секции [Associations] в [-Associations] с обновленим значков и обратно
' Кнопка вкл\выкл внутренних ассоциаций
Option Explicit
Dim FSO, TCS, F1, F2, Str1, Str2, Str3, Str4, Text1, Text2
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set TCS = CreateObject("TCScript.Helper")
If Err.Number <> 0 Then
  Err.Clear
  TCScriptHelperRegistration
  If Err.Number  = 0 Then Set TCS = CreateObject("TCScript.Helper")
  If Err.Number <> 0 Then
    MsgBox """TCScript.Helper"" в системе не зарегистрирован!", vbCritical, "Ошибка"
    WScript.Quit Err.Number
  End If
End If
On Error GoTo 0
F1   = "%COMMANDER_PATH%\bar\1.bar"
  Str1 = "%COMMANDER_PATH%\Icons\81.ico"
  Str2 = "%COMMANDER_PATH%\Icons\82.ico" 
F2   = "%COMMANDER_PATH%\WinCmd.ini"
Str3 = "[Associations]"
Str4 = "[-Associations]"

F1 = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F1))
F2 = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F2))

Text1 = FSO.OpenTextFile(F1, 1).ReadAll
Text2 = FSO.OpenTextFile(F2, 1).ReadAll
If bCheck Then
  Text1 = Replace(Text1, Str2, Str1, 1, -1, 1)
  Text2 = Replace(Text2, Str4, Str3, 1, -1, 1)
Else
  Text1 = Replace(Text1, Str1, Str2, 1, -1, 1)
  Text2 = Replace(Text2, Str3, Str4, 1, -1, 1)
End If
FSO.OpenTextFile(F1, 2).Write Text1
FSO.OpenTextFile(F2, 2).Write Text2

With TCS
  .LockTC True
  .Pause = 100
  .SendCommand   "cm_ButtonConfig"
  .SendKeystroke "{Tab}"
  .SendKeystroke "{Enter}"
  .SendCommand   "cm_InternalAssociate"
  .SendKeystroke "{Enter}"
End With

Set TCS = Nothing
Set FSO = Nothing
WScript.Quit

Function bCheck()
   Dim sFile
   sFile=WScript.ScriptFullName
   bCheck=TCS.INIRead(sFile, "Ass", "Line", 0)
   TCS.INIWrite sFile, "Ass", "Line", Not bCheck
End Function

[Ass]
Line =-1

'Процедура регистрации TCScript.Helper
Sub TCScriptHelperRegistration
  Dim HelperPath, Sudo
  '===== Изменяемые параметры ===============================
  'Путь к TCWSHelp.exe
  HelperPath = "%Commander_Path%\scripts\TCWSHelp.exe"
  'Путь к утилите Sudo
  Sudo       = "%Commander_Path%\scripts\Sudo.exe"
  '==========================================================
  With CreateObject("WScript.Shell")
    HelperPath = .ExpandEnvironmentStrings(HelperPath)
    Sudo       = .ExpandEnvironmentStrings(Sudo)
    CreateObject("WScript.Shell").Run """" & Sudo & """ """ & HelperPath & """ /REGSERVER", 7, True
  End With
End Sub



Если файлы 1.bar и wincmd.ini в кодировки Юникод, а не ANSI, то скрипт не работает, а именно очищает содержимое этих файлов.
Как поправить скрипт?
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group