View previous topic :: View next topic |
Author |
Message |
Anger
Joined: 06 Nov 2007 Posts: 7
|
(Separately) Posted: Thu Apr 29, 2010 16:58 Post subject: signatur.vbs |
|
|
Lev, спасибо за скрипт на первой странице - пригодился.
Lev wrote: | Небольшой скрипт, который может быть полезен для поиска файлов с определенной сигнатурой (первые байты в файле).
...
content = content_str
...
| Если в получаемой строке есть символы hex(00) (как например в первых 3 байтах контейнера MP4) - в текстовом виде строка вообще не выводится.
Поэтому нужно заменить на
content=Replace(content_str,Chr(0),Chr(1))
или на
content=Replace(content_str,Chr(0)," ")
Немного доработал скрипт ув.ricobautsch:
Code: | 'signatur.vbs by ricobautsch
'edited by Anger 29.04.2010
'Script for Script Content Plugin (c)Lev Freidin, 2005
'http://www.totalcmd.net/plugring/script_wdx.html
'http://wincmd.ru/plugring/script_wdx.html
'
'Этот скрипт показывает 11 байт файла (nCharCnt=11) начиная с начала (nCharStart=0) в hex
'и тектовом представлении - может быть полезен для поиска файлов с определенной сигнатурой
'Возвращаемые параметры: Result=HEX, Result1=Text
const nCharStart = 0
const nCharCnt = 11
Set fso = CreateObject("Scripting.FileSystemObject")
Set oTextStream = fso.OpenTextFile(filename)
oTextStream.Skip(nCharStart)
If not oTextStream.AtEndOfStream Then
content_str = oTextStream.Read(nCharCnt)
' Выводим Text в result1
content1=Replace(content_str,Chr(0),Chr(1))
' Выводим HEX в result
For i=1 To Len(content_str)
If content <> "" Then
content = content & " "
End If
hex_value = Hex(Asc(Mid(content_str,i,1)))
content = content & string(2 - len(hex_value), "0")
content = content & hex_value
Next
'Else
' content="EOF"
' content1="EOF"
End If
oTextStream.Close
|
PS. Использую для поиска видео-файлов из кеша оперы.
Wincmd.ini Code: | [Searches]
Video по содержимому > 500 кБ_SearchFor=
Video по содержимому > 500 кБ_SearchIn=
Video по содержимому > 500 кБ_SearchText=
Video по содержимому > 500 кБ_SearchFlags=0|000002000020|||||1|500|1||0000|
Video по содержимому > 500 кБ_plugin=script.Result1 contains FLV | script.Result1 contains mp4 | script.Result1 contains 3gp | script.Result1 contains AVI
|
Last edited by Anger on Fri Apr 30, 2010 10:03; edited 5 times in total |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue May 25, 2010 16:12 Post subject: |
|
|
В продолжение обсуждения в теме "Поиск папок с частично одинаковыми названиями" хотелось бы вернуться к вопросу возможности произвольно именовать колонки результатов.
Также хотелось бы увеличения количества колонок результатов.
Lev
Если не хочется запуска некольких скриптов, сделай приём результатов из скрипта, например, через ассоциированный массив (объект "Scripting.Dictionary"), у которого ключ - это имя результирующей колонки. Т.е. нечто вроде
Code: | content.Add "Новая колонка", "Результат" |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue May 25, 2010 16:48 Post subject: |
|
|
Lev wrote: | Автору плагина составляет труд даже понять, чего от него хотят
конфиг-параметр-отображаемое поле - я уже заблудился.
Может в обсуждение Script Content plugin'а перебраться? |
ОК, переберемся и уточним.
При инициализации плагина читаешь конфиг и строишь список полей из специальной секции, а дальше - выдаешь эти поля Тоталу, когда тот вызывает ContentGetSupportedField, и потом при вызове ContentGetValue вызываешь тот или иной скрипт, в зависимости от индекса - каждое поле будет иметь свой индекс, который ТК будет сообщать, так что тут не запутаешься. Работы - чуть-чуть, просто хранить не одну строку на запуск скрипта, а два массива - названий полей и строк запуска скрипта, и обращаться к ним по мере необходимости.
В результате юзер при настройке набора колонок будет видеть не одно поле, которое плагин может вернуть, а несколько полей, которые он предварительно настроил, и будет достаточно одной копии плагина для запуска любого числа скриптов.
Посмотрел формат файла script.ini, если я так понял, в секции [Script] указано, какой из блоков файла используется в данный момент. Вполне можно в этой секции обрабатывать строки вида "имя поля"="имя блока скрипта", при этом все имеющиеся параметры секции можно получить, вызвав функцию перечисления параметров INI-файла. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Last edited by MVV on Tue May 25, 2010 16:56; edited 1 time in total |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Tue May 25, 2010 16:50 Post subject: |
|
|
Quote: | произвольно именовать колонки результатов. | В редакторе колонок можно дать любое желаемое имя колонкам.
Насколько я разобрался - список выводимых результатов плагина грузится при прописывании плагина в тотале, имена при первом вызове, при смене количества колонок и их имён надо будет перепрописывать плагин в тотале.
Теоретически можно динамически перепрописывать имёна колонок в wincmd.ini при каждом вызове плагина, но займусь ли я этим не знаю.
Переписывать имя колонок и количество при выдаче результата каждого файла для директории из тысячи файлов имхо не очень оптимально. Не знаю сохранятсяуже выданные результаты, при изменении количества колонок.
---
Ставил ли кто-нибудь опыты с созданием ссылки на плагин вместо заведения его дубля?
Last edited by Lev on Tue May 25, 2010 16:57; edited 1 time in total |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Tue May 25, 2010 16:55 Post subject: |
|
|
Quote: | При инициализации плагина читаешь конфиг... |
Т.е. в ини файле будет прописано:
[Columns]
колонка1 = script1.vbs;content
колонка2 = script1.vbs;content1
Заголовок = script2.vbs;content
MyContent=script3.js;content
?
или ещё как-то? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue May 25, 2010 16:59 Post subject: |
|
|
Lev wrote: | Quote: | При инициализации плагина читаешь конфиг... |
Т.е. в ини файле будет прописано:
[Columns]
колонка1 = script1.vbs;content
колонка2 = script1.vbs;content1
Заголовок = script2.vbs;content
MyContent=script3.js;content
?
или ещё как-то? |
Я там дополнил пост. Да, смысл такой. Совсем несложно делать переменное число полей плагина, просто один раз их Тоталу выдавать. А обновить список полей можно, вызвав cm_UnloadPlugins - при этом ТК загрузит плагин заново, тем самым запросив список полей еще раз.
В общем, если юзер имеет несколько скриптов, чтобы он мог видеть несколько контентных полей в плагине - например, поля AddZeroes, ExeUp, Ext, Html и т.п. (можно настроить их в дефолтном конфиге).
А как именно устроить конфиг - тут уж тебе как автору виднее.
Lev wrote: | Ставил ли кто-нибудь опыты с созданием ссылки на плагин вместо заведения его дубля? |
Да. Правда, не с твоим плагином, но результат будет таким же - винда не загрузит новую копию уже загруженной в память библиотеки, просекает, что жесткая ссылка. Подробности. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue May 25, 2010 17:40 Post subject: |
|
|
Lev wrote: | Цитата:
произвольно именовать колонки результатов.
В редакторе колонок можно дать любое желаемое имя колонкам. |
Сорри, за введение в заблуждение. Я имел ввиду произольные наименования полей плагина. Именно о чём дальше идёт обсуждение.
А чем не устраивает преложенный мной ранее вариант?
Batya wrote: | [Script]
Section=Defaults|Extension|AddZeros|exe-arc up|js |
Batya wrote: | content.Add "Новая колонка", "Результат" |
Т.е. начитываем поля из инишника из значения "Section".
Запускаем единственный скрипт. Результат работы скрипта - это массив content с ключами по именам описанных ранее в инишнике полей:
Code: | content.Add "Defaults", "Результат 1"
content.Add "Extension", "Результат 2"
content.Add "AddZeros", "Результат 3"
content.Add "exe-arc up", "Результат 4"
content.Add "js", "Результат 5" |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Tue May 25, 2010 19:08 Post subject: |
|
|
Quote: | будет достаточно одной копии плагина для запуска любого числа скриптов | Можно ведь запускать скрипты скриптом, т.е. можно не переделывать плагин, а написать скрипт вызывающий скрипты по заданному условию - имени текущей папки, ключу в некотором файле и т.п.
О наименованиях полей выдаваемых плагином подумаю. Я так понял, что имеются в виду всё-таки не произвольные и не динамически генерируемые, а заранее вписанные в ini, свои для каждого скрипта в его секции. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Tue May 25, 2010 19:26 Post subject: |
|
|
В данный момент плагин поддерживает 10 колонок, или я чего-то недопонял. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue May 25, 2010 21:16 Post subject: |
|
|
Ну, было бы удобнее с любым числом колонок, особенно если это ограничение не связано с какими-либо сложностями. Кому-то хватит 3, кому-то надо 20, а все видят ровно 10, и названия у них малоговорящие (править файл локализации - не дело). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue May 25, 2010 23:40 Post subject: |
|
|
MVV wrote: | Поле - одно на каждый скрипт. |
Меня, конечно, игнорируют, но я выскажусь, что мне не нравится концепция - для каждого поля по скрипту.
Во-первых, это заставит плодить скрипты.
Во-вторых, результат некоторых полей может быть весьма похожим, и нет смысла размножать одинаковую логику.
Ну и наконец, результаты некоторых полей могут зависеть друг от друга. Тогда опять приходим к умножению одинаковых сущностей.
Подумайте, как, например, при новой логике может быть реализован вот этот вариант. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Sep 13, 2010 17:49 Post subject: |
|
|
Новый скриптик:
Code: | '=================================================
' Колонка Result возвращает владельца файла\папки
'=================================================
content = Result
Function Result
On Error Resume Next
Dim wmiSecSettings 'WMI объект для параметров безопасности
Dim wmiSecurityDescriptor 'Дескриптор защиты файла
Dim FOResult 'Результат выполнения операции чтения дескриптора безопасности
Dim wmiOwner 'Объект владельца файла
Set wmiSecSettings = GetObject ("winmgmts:Win32_LogicalFileSecuritySetting.path='" & filename & "'") 'Создание WMI объекта файла
FOResult = wmiSecSettings.GetSecurityDescriptor(wmiSecurityDescriptor) 'Считывание дескриптора безопасности
Set wmiOwner = wmiSecurityDescriptor.Owner 'Создание объекта владельца файла
If Err.Number <> 0 Then 'Ошибка при определении владельца файла
Result = "Can't get file owner. Error: " & Err.Description
Else 'Владелец файла определен - вывод результата
Result = wmiOwner.Domain & "\" & wmiOwner.Name
End If
End Function
|
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
vsz
Joined: 18 Nov 2010 Posts: 1
|
(Separately) Posted: Thu Nov 18, 2010 19:18 Post subject: Путь к ini-файлу |
|
|
Здравствуйте!
Обнаружил проблему с использованием плагина в Portable установке. Подозреваю, что плагин не может найти свой ini-файл.
Как вариант можно всегда брать ini-файл в той же папке, где находится и сам файл плагина:
Code: |
uses Windows;
function GetModuleFileNameStr: String;
var
buffer : array [0..MAX_PATH] of Char;
begin
GetModuleFileName( Hinstance, buffer, MAX_PATH);
Result := buffer;
end;
iniPath := ExtractFilePath(GetModuleFileNameStr);
|
|
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Thu Nov 18, 2010 20:44 Post subject: |
|
|
Quote: | можно всегда брать ini-файл в той же папке, где находится и сам файл плагина |
Плагин всегда берёт ini-файл в той же папке, где находится и сам файл плагина.
Никакого другого поведения я не закладывал.
Quote: | Подозреваю, что плагин не может найти свой ini-файл. |
Когда плагин не может найти свой ini-файл он пишет - No script or ini file, снимая этим все подозрения. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|