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 

Помогите запустить скрипты от Вахмурки

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Sat Sep 29, 2007 17:15    Post subject: Помогите запустить скрипты от Вахмурки Reply with quote

Помогите запустить скрипты от Вахмурки.
Вроде все плагины нужные стоят. А не работает Ж(

TC 7.02a
WinXP SP2
PowerPro 4.7.07


Установленные плагины для PPro
Code:
au.dll
AutoItDLL.dll
childwin.dll
class.dll
clip.dll
date.dll
event.dll
file.dll
float.dll
float2.dll
ini.dll
int64.dll
map.dll
math.dll
menu.dll
miscplugin.dll
mousegesture.dll
note.dll
pcre.dll
pcreposix.dll
regex.dll
sample.dll
tc.dll
vec.dll
volume.dll
win.dll


HighLightCurrentTab

Описание Выделяет текущую вкладку цветом или снимает выделение
Параметры "1" - выделить текущую вкладку
"0" - убрать выделение

Code:
local hwnd = win.handle("c=TTOTAL_CMD")
local Panel = ifelse(tc.active(hwnd) == "left", 2, 3)
local TMP = childwin.handle(hwnd, "TMyPanel", Panel)
local TMTC = childwin.handle(TMP, "TMyTabControl")
local CurTab = win.sendmessage(TMTC, 4875, 0, 0)
win.sendmessage(TMTC, 4915, CurTab, arg(1))


Запускаю с параметрами. Ошибок не выдает, но и не чего не происходит.

TabTools

Выдает список всех вкладок на обеих панелях с названиями, путями и обозначением статуса. Содержит подменю операций со вкладками.
Code:
TabTools.powerpro
TabTools.ini
TabTools.icl


В папке Subs:
Code:
Sub_TreatCL.powerpro
Sub_ReadTabs.powerpro
Sub_PathVal.powerpro
Sub_MultiFind.powerpro
Sub_HighLight.powerpro
Sub_CloseDups.powerpro
Sub_CloseAllTabs.powerpro
Sub_Alias.powerpro


При запуске TabTools.powerpro выдает INI Plugin error #1
Такая же ошибка вылетает при запуске Sub_ReadTabs.powerpro

Code:
if(ini.check_exists(Config, Single, "path") != 3) do
   Temp = "Key 'path' does not exist in section '" ++ Single ++ "'"
   messagebox("ok error", Temp, "INI plugin error #1")
   quit all
endif



F2 и localBar от Gregory

Открывает локальное меню, если оно есть, в противном случае повторно считывает путь. Желательно повесить скрипт на клавишу F2. Скрипт для тех, кто ностальгирует по Нортону

Вызываемые модули Утилиты TCMenu или TCToolbar (установлены обе и работают)

F2

Code:
local hwnd = win.handle("c=TTOTAL_CMD")
local Panel = ifelse(tc.active(hwnd) == "left", 2, 3)
local TMP = childwin.handle(hwnd,"TMyPanel", Panel)
local TMTC = childwin.handle(TMP,"TMyTabControl")
local Path = childwin.gettext(ifelse(TMTC, TMTC, TMP), "TMyPanel", 2)
Path = file.folder(Path)

for (length(Path) > 1)
   Panel = Path ++ "\_local.bar"
   if (validpath(Panel)) do
      do("c:\totalcmd\programs\TCmenu.exe", Panel)
      quit
   else
      Path = file.folder(Path)
   endif
endfor

win.sendmessage(hwnd, 0x400+51, 540, 0)


localBar

Code:
local path barpath hh
;получим дескриптор окна TC
hh=win.handle("c=TTOTAL_CMD")
;сохраним буфер обмена в переменную
local tmp=clip.get
;скопируем в буфер активную директорию
win.sendmessage(hwnd,0x400+51,2029,0)
;получим активную директорию
path=clip.get

;если в ней или в родительских находится файл _local.bar
;запускаем его с помощью TCMenu
for (length(path)>1)
barpath=path++"\_local.bar"
if (validpath(barpath)) do
barpath="'""++barpath ++"'" -$"
do("c:\totalcmd\programs\TCmenu.exe",barpath)
break
else
path=file.folder(path)
endif
endfor

;восстановим буфер обмена
clip.set(tmp)


в папке лежит _local.bar

Ни один из двух скриптов не работает. При запуске бар не выскакивает.
С панели ТС и через командную строку работает…..
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Sat Sep 29, 2007 17:42    Post subject: Reply with quote

DirColor
http://pprotcmd.narod.ru/Scripts/DirColor.htm

Позволяет задать цвет директории в зависимости от ее содержимого

Quote:
args Path

local hwnd = win.handle("c=TTOTAL_CMD")
local IniFile = pprofolder ++ "scripts\ini\DirColor.ini" (мой путь)
local Masks = ini.enum_keys(IniFile, "Colors")
local MCounter = line(Masks, 0)
local Dirs = file.listfiles(Path, 4)
local DCounter = line(Dirs, 0)
local i, j, OneDir, OneMask, OneKey
local Desc = file.open(Path ++ "descript.ion", "w")

if(Desc <= 0) do
messagebox("ok error", "File not opened", "FILE plugin error")
quit
endif

for(i = 1; i <= DCounter; i++)
OneDir = line(Dirs, i)
for(j = 1; j <= MCounter; j++)
OneMask = line(Masks, j)
if(file.validpath(OneDir ++ "\" ++ OneMask)) do
OneKey = ini.get(IniFile, "Colors", OneMask)
file.writeline(Desc, file.nametype(OneDir) ++ " " ++ OneKey)
endif
endfor
endfor

file.close(Desc)
win.sendmessage(hwnd, 0x400+51, 540, 0)


Выдает ошибку:

Code:
ERROR: ini.enum_keys: INI FILE DOESN'T EXIST

ERROR occurred near line 5 of script DirColor:
local Masks = ini.enum_keys(IniFile, "Colors")


плагины win, ini, file установлены
Back to top
View user's profile Send private message
Georgе



Joined: 28 Aug 2007
Posts: 99

Post (Separately) Posted: Sun Sep 30, 2007 01:15    Post subject: Reply with quote

Пути "под себя" поправить не забыл? Не напутал, когда поправлял?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sun Sep 30, 2007 16:44    Post subject: Reply with quote

Попробую помочь.

1) Прежде всего убедись, что все скрипты живут в подпапке scripts той директории, куда установлена PowerPro (по умолчанию, кажется, c:\Program Files\PowerPro).

2) Попробуй запустить такой скрипт:
Code:
win.debug("Hello World")
Должно вылезти окошко с текстом Hello World. Если вылезет, будем разбираться дальше. Если нет, см. выше.

TabTools
Попробуй поменять расширения скрипта на txt, хотя вряд ли поможет.

INI plugin error #1 означает, вероятно, что файл wincmd.ini не находится там, где указано (см. код скрипта TabTools). То, что файла wincmd.ini нет совсем, я исключаю Smile

3) Скопируй все *.powerpro в *.txt - чтобы были два одинаковых файлв с одним именем, но разными расширениями. На сайте pprotcmd.narod.ru я объяснил, почему использую расширение txt вместо powerpro.

LocalMenu
Обрати внимание на следующую строчку:
Code:
      do("c:\totalcmd\programs\TCmenu.exe", Panel)
Там должен быть указан твой собственный путь к TCmenu.

Попробуй и сообщи, что получилось. Единственный случай, когда мои скрипты вообще не работали, был когда человек не туда их положил, так что начни с первого пункта.

Желаю удачи
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sun Sep 30, 2007 18:18    Post subject: Reply with quote

2Paranoik
Может, он прав, когда говорит
Code:
INI FILE DOESN'T EXIST
, то есть "ini-файл не существует"? Проверь, есть ли он по указанному пути. Если PowerPro установлена в c:\Program Files\PowerPro, то путь к файлу настроек должен быть:

c:\Program Files\PowerPro\scripts\ini\DirColor.ini

либо можешь положить его куда угодно и прописать путь в явном виде, например:
Code:
local IniFile = "c:\MyPath\MyDirColor.ini"
- лишь бы указанный файл существовал в указанном месте.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Sun Sep 30, 2007 19:31    Post subject: Reply with quote

Спасибо с TabTools разобрался. Там было %COMMANDER_PATH%/wincmd.ini
Как можно задать относительный путь чтоб работало с флэшки?
PowerPro у меня стоит в подпапке тотала.... Но если вписать точный путь, то с флэшки скрипт уже не будет работать....

Остальные подскрипты пока не работают. Буду позже разбираться, видать что-то с путями тоже....


LocalMenu
Quote:
Обрати внимание на следующую строчку
Code:
  do("c:\totalcmd\programs\TCmenu.exe", Panel)


Там должен быть указан твой собственный путь к TCmenu.

Так и есть.....
В командной строке пишу:
Code:
c:\totalcmd\programs\TCmenu.exe c:\totalcmd\programs\_local.bar

И все работает. А через скрипт не хочет.....
При запуске скрипта видно, что он запускается, но ничего не выдает.....

DirColor
Quote:
либо можешь положить его куда угодно и прописать путь в явном виде, например
Code:
local IniFile = "c:\MyPath\MyDirColor.ini"


- лишь бы указанный файл существовал в указанном месте.


Прописал
Code:
local IniFile = "c:\totalcmd\programs\ppro\scripts\ini\DirColor.ini"

Именно там и лежит. Но не работает.
Содержание файла:
Code:
[Colors]
;mask=keyword
*.pcf=Red
blank.ico=Green


Что значит эта строчка?
Code:
local Masks = ini.enum_keys(IniFile, "Colors")


ЗЫ Как сделать, чтоб панелька TabTools выскакивала по середине экрана, а не у курсора мышки?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sun Sep 30, 2007 20:26    Post subject: Reply with quote

Quote:
Как можно задать относительный путь чтоб работало с флэшки?
Есть такая переменная pprofolder. Из названия ясно, что она всегда имеет значение того пути, куда установлена PowerPro. Впрочем, для решения таких изощренных задач без RTFM обойтись...

Что касается LocalMenu, то этот скрипт написал Gregory, а было это очень давно. С тех пор синтаксис команд поменялся, и работа скрипта может сильно отличаться от планируемой. Попробуй мой скрипт http://powerpro.wincmd.ru/Scripts/F2.htm.

Насчет DirСolor. Ты почитай описание - все ли сделано правильно? В частности, если ты не менял инишник, то результат будет лишь при наличии файлов *.pcf и конкретного файла blank.ico. Они есть? Если нет, то скрипт и не будет работать.

Попробуй сначала проследовать по описанному пути. Если все пашет, создай свои маски и цвета, а не те, которые я привел чисто для примера.

Quote:
Что значит эта строчка?
См. документацию к плагину ini.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Sun Sep 30, 2007 22:35    Post subject: Reply with quote

Quote:
Есть такая переменная pprofolder. Из названия ясно, что она всегда имеет значение того пути, куда установлена PowerPro. Впрочем, для решения таких изощренных задач без RTFM обойтись...

Это я уже понял что за переменная. Пытался задавать с этой переменной путь вида ../../ не получилось.

Quote:
Что касается LocalMenu, то этот скрипт написал Gregory, а было это очень давно. С тех пор синтаксис команд поменялся, и работа скрипта может сильно отличаться от планируемой. Попробуй мой скрипт http://powerpro.wincmd.ru/Scripts/F2.htm.

В первом посте написал, что оба пробовал. Ни один не работает.

Quote:
Насчет DirСolor. Ты почитай описание - все ли сделано правильно? В частности, если ты не менял инишник, то результат будет лишь при наличии файлов *.pcf и конкретного файла blank.ico. Они есть? Если нет, то скрипт и не будет работать.

Попробуй сначала проследовать по описанному пути. Если все пашет, создай свои маски и цвета, а не те, которые я привел чисто для примера.

Все проверил по статье. Вроде все правильно. DirColor.ini изменил под себя.
Только проблема осталась. Скрипт выдает ошибку.

ЗЫ Вызываю меню горячей клавишей из PowerPro. Там клавой перехожу на отображение папки Program Files. Она открывается в менюшки, но если мышка в стороне, то через 1-2 сек она исчезает (папка-меню). (Первоначальная менюшка держится сколь угодно долго, т.к. Скрывать через (мс): отключено)
Собственно вопрос: как заставить подменю (в виде папки) не закрываться, если мышка в стороне?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Mon Oct 01, 2007 00:15    Post subject: Reply with quote

Quote:
путь вида ../../
Это в смысле - переход на два уровня вверх? Не, не должно покатить, надо использовать file.folder. Попробуй это.

Вот только что тупо взял вот отсюда код скрипта, заменил путь к TCmenu и запустил без проблем!

Возможно, дело в винде. У меня 2000, и под ХРюшей я скрипты не тестировал.

А другие скрипты работают? Не работают только те, о которых ты говорил, а другие работают?

Еще мысль. Попробуй вместо параметра %P указывать %p (и т.п.). Еще попробуй поставить знак вопроса перед параметрами:
Code:
?"%P%O"
Если и это ничего не даст, то пока у меня идеи кончились.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Mon Oct 01, 2007 02:02    Post subject: Reply with quote

Нашел косяк.
Quote:
for (length(Path) > 1)
Panel = Path ++ "/_local.bar"
if (validpath(Panel)) do
do("c:/totalcmd/programs/TCmenu.exe", Panel)
quit
else
Path = file.folder(Path)
endif
endfor

Замечена недоработка. Если менюшка лежит в родительской(ских) папках, то она всегда отображается! Т.е. если ее положить в корень диска С, то во всех папках будет менюшка....


MoveTab
Делает копию на другой панели. Потом перемещает курсор на 2 пункта вниз и жмет Enter. В общем криво, но работает. Видимо что-то подправить надо в скрипте....

Hello World
Работает Ж)

Divider
Работает. Хотя есть косяк. Частенько вызывает менюшку, и тутже она исчезает. Видимо какая то команда её отменяет. А так в принципе работает.

TabTools
Сам скрипт работает.
Подскрипты вызываемые этим скриптом пока не работают.
Пара скриптов запускалась. Теперь почему-то ни один из них не работает Shocked
Позже буду разбираться.

После запуска скрипта MoveTab другие скрипты, которые выдавали ошибки добавляют вниз 2-3 строки вида:
Code:

Called from line 26 of script MoveTab
Called from line 26 of script MoveTab
Called from line 26 of script MoveTab

Помогает перезапуск PowerPro
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Mon Oct 01, 2007 02:25    Post subject: Reply with quote

Запустил DirColor. Ошибок не выдает. Поменял в пути \ на /

DirColor.ini
Code:
[Colors]
;mask=keyword
*.html=Green


Делаю папку. Кидаю туда пачку *.html
Выхожу из папки запускаю скрипт. захожу, читаю descript.ion слова Green там нет.
В папке запускаю скрипт. читаю descript.ion опять ничего.
Ни в дочерних ни в родительских папках в файлах descript.ion данные слова не прописываются.
Back to top
View user's profile Send private message
Georgе



Joined: 28 Aug 2007
Posts: 99

Post (Separately) Posted: Mon Oct 01, 2007 03:09    Post subject: Reply with quote

Paranoik, ты перепутал назначение скриптов.
Quote:
Название DirColor
Имя файла (*.txt) DirColor.txt
Описание Позволяет задать цвет директории в зависимости от ее содержимого

Для работы с файлами descript.ion предназначен другой скрипт.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Mon Oct 01, 2007 11:57    Post subject: Reply with quote

Quote:
Замечена недоработка. Если менюшка лежит в родительской(ских) папках, то она всегда отображается! Т.е. если ее положить в корень диска С, то во всех папках будет менюшка....
Это не недоработка, это следование идеологии Нортона! Происходит вот что: при запуске скрипта РР пытается найти _local.bar в текущей директории. Если не находит, смотрит в родителе. Если не находит - в прародителе и далее до корня. То есть можно иметь менюшку, скажем, для всех языков (c:\Languages) и отдельно для английского (c:\Languages\English), французского ( c:\Languages\Francais) и т.д. Частное всегда сильнее общего (локальное - глобального) - это везде так.
Quote:
Нашел косяк.
"Это не ошибка, это системная функция!"
Вообще Свитцер (автор РР) настаивает на использовании в скриптах именно прямого слеша, а не обратного. Обосновывает он это тем, что обратный применяется во всяких эскейп-последовательностях типа \n. Я не обнаружил абсолютно никакой разницы, поэтому пишу когда как. Если тебе это помогло - я рад.

Quote:
Делает копию на другой панели. Потом перемещает курсор на 2 пункта вниз и жмет Enter.
Спасибо за разьяснение Smile
Quote:
В общем криво, но работает. Видимо что-то подправить надо в скрипте....
Попробуй вместо
Code:
*keys {down 5}{enter}
написать
Code:
*keys {slow}{down 5}{enter}


Quote:
Делаю папку. Кидаю туда пачку *.html
Выхожу из папки запускаю скрипт. захожу, читаю descript.ion слова Green там нет
1) Проверь, есть ли цветовой фильтр Green;
2) Проверь, определен ли цвет для фильтра
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Paranoik



Joined: 05 Oct 2006
Posts: 9

Post (Separately) Posted: Tue Oct 02, 2007 09:59    Post subject: Reply with quote

Quote:
"Это не ошибка, это системная функция!"
Вообще Свитцер (автор РР) настаивает на использовании в скриптах именно прямого слеша, а не обратного. Обосновывает он это тем, что обратный применяется во всяких эскейп-последовательностях типа \n. Я не обнаружил абсолютно никакой разницы, поэтому пишу когда как. Если тебе это помогло - я рад.

Для меня ошибка. Т.к. по другому просто не работает.

Quote:
Спасибо за разьяснение

Это не разъяснение. Это у меня так скрипт работал. Вместо перемещения делал копию на другой панели а на исходной запускал файл на 2 позиции ниже....

Подправил.
Code:
*keys {slow}{down 5}{enter}

Теперь делает 2 копии на противоположной панели. Потом секунд 5 над чем-то думает... Исходная панель остается.

Quote:
1) Проверь, есть ли цветовой фильтр Green;
2) Проверь, определен ли цвет для фильтра

Проверил. Все есть. Только вопрос в другом. Какой смысл от фильтра, если в descript.ion не добавляется ни строчки? Ведь фильтр раскрашивает папку в зависимости от содержания файла descript.ion? А там пусто.....
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Wed Oct 03, 2007 18:58    Post subject: Reply with quote

Я прокомментирую скрипт DirColor как очень несложный. Не знаю, зачем я это делаю, но больше ничем тебе помочь не смогу. У меня все работает. Более того, я знаю еще минимум двух человек, у кого тоже работает.

args Path
;;путь (%P)
local hwnd = win.handle("c=TTOTAL_CMD")
;;получаем дескриптор окна ТС
local IniFile = pprofolder ++ "scripts\ini\DirColor.ini"
;;указываем, где искать файл настроек
local Masks = ini.enum_keys(IniFile, "Colors")
;;какие маски в разделе [Colors]
local MCounter = line(Masks, 0)
;;сколько их
local Dirs = file.listfiles(Path, 4)
;;список поддиректорий текущего пути
local DCounter = line(Dirs, 0)
;;сколько их
local i, j, OneDir, OneMask, OneKey
local Desc = file.open(Path ++ "descript.ion", "w")
;;открыли файл descript.ion в текущей директории

if(Desc <= 0) do
messagebox("ok error", "File not opened", "FILE plugin error")
quit
endif
;;если не открылся, завершить

for(i = 1; i <= DCounter; i++)
;;цикл по директориям
OneDir = line(Dirs, i)
;;одна директория
for(j = 1; j <= MCounter; j++)
;;цикл по маскам
OneMask = line(Masks, j)
;;одна маска
if(file.validpath(OneDir ++ "\" ++ OneMask)) do
;;подходящая директория найдена
OneKey = ini.get(IniFile, "Colors", OneMask)
;;получить имя фильтра
file.writeline(Desc, file.nametype(OneDir) ++ " " ++ OneKey)
;;записать его в дескрипт.ион в формате "директория фильтр"
endif
endfor
endfor

file.close(Desc)
;;закрыть дескрипт.ион
win.sendmessage(hwnd, 0x400+51, 540, 0)
;;обновить панель

Вот. Если хочешь, чтобы скрипт работал, вставляй отладочную печать

win.debug(переме1, перем2, ...)

Я не знаю, чем еще я могу тебе помочь.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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