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
sa



PostPosted: Sat Feb 20, 2010 17:41    Post subject: Reply with quote

Заметил, что фокус с "кратким просмотром" результатов поиска не работает, если результат один.
Предлагаю скрипт (с использованием TCWSHelp), навеянный обсуждением и предназначенный для вывода результатов поиска на панель.
Сам вижу в нём ряд недостатков (проблема с раскладкой клавиатуры, например) и надеюсь на помощь форумчан в их устранении.
Надеюсь, всё же, что хотя бы для демонстрации фокусов с панелью результатов поиска, он может быть полезен.
Code:
'================================================================================
'  File:         Поиск файлов по шаблону.vbs
'  Description:  Поиск файлов по шаблону с последующим выводом на панель.
'  Parameters:   Первый параметр (обязательный): номер строки шаблона в
'      отсортированном по алфавиту списке шаблонов поиска.
'      Для корректного выполнения скрипта создайте в TC хотя бы один шаблон.
'      Вывод на панель осуществляется без участия пользователя только в случае
'      доступности кнопки "Feed to listbox" ("Файлы на панель") по истечении
'      устанавливаемой паузы для ожидания завершения поиска и совпадении языка
'      меню TC и раскладки клавиатуры (см. комментарии по тексту скрипта).
'        Второй параметр (может отсутствовать): номер пользовательского набора
'      колонок для панели с результатами поиска (1...99) или
'       B (или К) - для краткого режима,
'       F (или П) - для подробного режима,
'       T (или Э) - для режима эскизов.
'      Режим панели применяется к панели с результатами только при условии, что
'      поиск успешно завершился (или прерван) в пределах устанавливаемой паузы и
'      вывод на панель прошёл без участия пользователя, иначе второй параметр
'      просто переключает режим активной файловой панели
'  Requirements: WSH Helper for TC by Volniy
'  Installation: Создайте для скрипта, например, кнопку на панели инструментов TC
'  Autor:        sa
'================================================================================
Option Explicit
If WScript.Arguments.Count < 1 Then
  MsgBox "Не задан первый параметр: номер шаблона поиска!", _
    vbOKOnly + vbCritical, _
    "Поиск файлов по шаблону.vbs"
  WScript.Quit
End If
Dim TCS, n
Set TCS = CreateObject("TCScript.Helper")
TCS.LockTC True
TCS.SendCommand 501 'cm_SearchFor
TCS.SendKeystroke "+{Tab}{End}{Tab}{End}{Home}"
For n = 1 To WScript.Arguments(0)-1
  TCS.SendKeystroke "{DOWN}"
Next
TCS.SendKeystroke "{Enter}"
TCS.SendKeystroke "{Enter}"
wscript.sleep(1000)
' Пауза для ожидания завершения поиска (в миллисекундах), по истечении
'которой посылается комбинация клавиш для вывода файлов на панель.
'Если при этом поиск не успел завершиться, то по его окончании вывод
'выполняется самим пользователем
If Instr(1, UCase(TCS.INIRead _
  (TCS.MainINI, "Configuration", "LanguageIni", "0")), _
     "_RUS") = 0 Then 'Проверка: если меню TC не русифицированное...
'  TCS.SendKeystroke "^+1"
' Раскомментировать предыдущую строку, если переключение на английский язык
'настроить в региональных стандартах на Ctrl+Shift+1. Иначе команда
'"Feed to &listbox" выполняется без участия пользователя только для
'английской раскладки клавиатуры
  TCS.SendKeystroke "%l"
Else                           'иначе, если меню русифицированное...
'  TCS.SendKeystroke "^+2"
' Раскомментировать предыдущую строку, если переключение на русский язык
'настроить в региональных стандартах на Ctrl+Shift+2. Иначе команда
'"Фай&лы на панель" выполняется без участия пользователя только для
'русской раскладки клавиатуры
  TCS.SendKeystroke "%k"
'  TCS.SendKeystroke "^+1"
' Раскомментировать предыдущую строку, если переключение на английский язык
'настроено на Ctrl+Shift+1 и есть желание переключиться с русского на
'английский перед выходом из скрипта
End If
If WScript.Arguments.Count > 1 then
  Select Case UCase(WScript.Arguments(1))
  Case "B","К"  'Краткий (Эскизы - Краткий)
    TCS.ClearClip
    TCS.SendCommand 3301 'cm_SelectAllBoth
    TCS.SendCommand 2017 'cm_CopyNamesToClip
    TCS.SendCommand 524  'cm_ClearAll
    If UBound(Split(TCS.GetTextFromClip,vbNewLine)) = 0 Then
      MsgBox "Результатов поиска один (возможно ноль)." & _
        vbNewLine & "Режим файловой панели не изменялся!", _
        vbOKOnly + vbSystemModal, "Поиск файлов по шаблону.vbs"
    Else
      TCS.SendCommand 269  'cm_SrcThumbs  или 271 'cm_SrcCustomView1
      TCS.SendCommand 301  'cm_SrcShorth
      TCS.SendCommand 330  'cm_SrcNegOrder
      TCS.SendCommand 330  'cm_SrcNegOrder
' Закомментировать две предыдущие строки, чтобы ширина колонок в кратком режиме
'не подстраивалась под самое длинное имя файла на панели результатов поиска -
'в данном варианте с помощью двукратной сортировки панели в обратном порядке.
'После закомменирования ширина колонок на панели результатов поиска будет
'наследоваться от последнего применённого краткого режима на активной файловой
'панели, либо составит половину её ширины, если наследования не было или если
'найденные файлы поместились в одну колонку на панели.
'Поведение указано для значения ключа BriefViewWidthLimit=0
    end if
  Case "F","П"  'Подробный (Эскизы - Подробный)
    TCS.SendCommand 269  'cm_SrcThumbs или 271 'cm_SrcCustomView1
    TCS.SendCommand 302  'cm_SrcLong
  Case "T","Э"  'Эскизы
    TCS.SendCommand 269  'cm_SrcThumbs
  Case Else     'Пользовательский набор колонок
    n =  WScript.Arguments(1)     'cm_SrcCustomView
    If n > 0 and n < 30 Then
       TCS.SendCommand 270 + n   
    ElseIf n > 29 and n < 100 Then
       TCS.SendCommand 7500 + n
    Else
      MsgBox "Не верно задан второй параметр: режим панели!", _
        vbOKOnly + vbCritical, _
      "Поиск файлов по шаблону.vbs"
    End If
  End Select
End If
TCS.LockTC False
Set TCS = Nothing
Wscript.Quit

Его можно повесить на кнопку:
Code:
TOTALCMD#BAR#DATA
Диск:\путь\к\файлу\Поиск файлов по шаблону.vbs
1 b
WCMICONS.DLL,47
Поиск файлов по шаблону с последующим выводом на панель


-1
Диск и путь к файлу “Поиск файлов по шаблону.vbs”, а также параметры нужно заменить на свои.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group