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 

Открылся сайт "Total Commander и PowerPro"
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Вахмурка



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

Post (Separately) Posted: Fri Sep 23, 2005 21:05    Post subject: Открылся сайт "Total Commander и PowerPro" Reply with quote

Открылся сайт, посвященный совместной работе Total Commander и PowerPro:
http://pprotcmd.narod.ru
Скрипты, статьи, ссылки, советы, плагины, утилиты, иконки.
Добро пожаловать!
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
LocKtaR-o-DarK



Joined: 12 Aug 2005
Posts: 349
Location: Москва

Post (Separately) Posted: Sat Sep 24, 2005 11:23    Post subject: Reply with quote

Посмотрел сайт, но, честно говоря, большинство описанных операций делаются тоталом и без применения скриптов.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Sep 25, 2005 10:41    Post subject: Reply with quote

Многие скрипты весьма накручены и в них даже трудновато разобраться. А некоторые просто некий набор клавиатурных команд, посылаемых Тоталу, тоесть могут быть реализованы и без тяжелой артиллерии PowerPro.

ЗЫ Вахмурка, нарисуй скрипт для установки разделителя файловых панелей в определенное положение. Я потом свой вариант покажу. Померяемся Question Wink
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Sun Sep 25, 2005 20:18    Post subject: Reply with quote

LocKtaR-o-DarK wrote:
Посмотрел сайт, но, честно говоря, большинство описанных операций делаются тоталом и без применения скриптов.

Разумеется. Ничего другого и ждать было нельзя. Но можно попробовать с секундомером засечь, что быстрее. Smile
Вот это, разве что, ТС не делает ну никак:
http://pprotcmd.narod.ru/Scripts/TabTools.htm
Сделаешь - напиши как. Всем будет интересно.
А вообще скрипты (имеется в виду именно приложение их к ТС) не могут сделать того, что выходит за рамки возможностей самого ТС. Скрипт упрощает и ускоряет работу, но не более того. Об этом я написал во Введении.

2Volniy
Quote:
Многие скрипты весьма накручены и в них даже трудновато разобраться

И не надо. Где надо разбираться, я пометил синеньким. Smile
Напишешь то же проще - пришли, выложу.

Quote:
А некоторые просто некий набор клавиатурных команд, посылаемых Тоталу, тоесть могут быть реализованы и без тяжелой артиллерии PowerPro

Пиши - выложу.

Quote:
Вахмурка, нарисуй скрипт для установки разделителя файловых панелей в определенное положение. Я потом свой вариант покажу. Померяемся

Не обещаю. Оно мне не надо. А это очень трудно - писать то, что не надо.
_________________
Сайт 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: Tue Sep 27, 2005 21:03    Post subject: Reply with quote

2Volniy
Volniy, ты редиска. Ты меня взял на слабо, как сопливого пацана. И я в течение часа занимался тем, что я никогда не буду использовать. Только чтобы слиться с тобой в экстазе "компаративной фаллометрии". Бяка ты, Volniy.
Ну, а если серьезно. Ты не совсем четко поставил задачу, и я имел право решить ее для частного случая, а именно:
1) используются только "стандартные положения" разделителя;
2) предполагается, что разделитель вертикальный, а не горизонтальный.
Больше мериться с тобой не буду (обещала лиса кур не таскать...). Хотя пути решения могу наметить, если хочешь, там все тривиально.
Code:

;arg(1) is "1" for 20% from left, "2" for 30%, ... etc ..., "7" for 80%
local Where = arg(1)
local i
local Hand = win.handle("c=TTOTAL_CMD")

flag set 1

for(i = 1; 1; i = i + 1)
   hh = childwin.handle(Hand, i)
   if(hh != "" && win.width(hh) == 3) do
      flag clear 1
      break
   endif
endfor

if(pproflag(1))
   quit

local HCenter = (win.left(hh) + win.right(hh))/2
local VCenter = (win.top(hh) + win.bottom(hh))/2
local expr = "ab " ++ HCenter ++ " " ++ VCenter
win.mouse(expr)
wait.for(10)
mouse rightdown
wait.for(10)
mouse rightup

for(i = 1; i <= Where; i = i + 1)
   *keys {down}
endfor

*keys {enter}
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Wed Sep 28, 2005 15:47    Post subject: Reply with quote

Вахмурка wrote:
Бяка ты, Volniy.
Ну, а если серьезно. Ты не совсем четко поставил задачу, и я имел право решить ее для частного случая

То, что я бяка спорить не стану Smile Даже больше, чем бяка, потому как скрипта на PowerPro я и не собирался писать (хотя, могу и попробовать, конечно). Все гораздо проще: в моем варианте это скрипт на моем TC WSH Helper-е. Там для этой цели я написал отдельный метод (ну просто для понту). То есть установить разделитель в нем можно всего лишь одной командой.
Quote:
Больше мериться с тобой не буду (обещала лиса кур не таскать...). Хотя пути решения могу наметить, если хочешь, там все тривиально.

В принципе да, произвольная установка тоже достаточно просто реализуется (поиск окна панели разделителя - установка указателя мышки на нем - программное перемещение указателя в нужную позицию экрана - отпускание ), но и мне повозиться прилично пришлось. Но зато теперь этот метод может установить разделитель (пока тоже только вертикальный) в нужное положение (при любом положении и размере окна Тотала) с точностью 0,1% (!, только кому это нафиг нужно Question Smile ).

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



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

Post (Separately) Posted: Thu Sep 29, 2005 14:42    Post subject: Reply with quote

Volniy wrote:
с точностью 0,1% (!, только кому это нафиг нужно Question.

2Volniy
Золотые слова! Хватит позориться нам с тобой, зас...ая инет бессмысленными скриптами.
У меня к тебе проф. вопрос. Задача: закрыть заданную вкладку, не активизируя ее (если путь указывает в несуществующее место, например). Среда разработки не имеет никакого значения. Там фишка - в арифметике: учесть количество вкладок, названия, ширину окна. Если все аккуратно продумать, можно точно указать координату над нужной вкладкой. Остается открыть вкладочное меню и послать Ctrl+W.
Есть какие-нибудь мысли на этот счет? Если хочешь, вдвоем что-нибудь сваляем. Цель стоящая, по себе знаю. Часто приходится такое делать. Я написал скрипт http://pprotcmd.narod.ru/Scripts/Subs/Subs.htm#PathVal, который лишь находит "тухлую" вкладку, но закрывать ее приходится врукопашную, а это не есть хорошо.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri Sep 30, 2005 02:01    Post subject: Reply with quote

Вахмурка wrote:

У меня к тебе проф. вопрос. Задача: закрыть заданную вкладку, не активизируя ее (если путь указывает в несуществующее место, например). Среда разработки не имеет никакого значения. Там фишка - в арифметике: учесть количество вкладок, названия, ширину окна. Если все аккуратно продумать, можно точно указать координату над нужной вкладкой. Остается открыть вкладочное меню и послать Ctrl+W.
Есть какие-нибудь мысли на этот счет?

Есть. Я бы (сходу) предложил 2 варианта:
1) Отредактировать файл с вкладками и загрузить его (или изменить непосредственно сам ини-файл Тотала и перезагрузить последний)
2) Послать немножко мессаг таб контролам TMyTabControl
TCM_GETITEMCOUNT -> в цикле TCM_GETITEM -> для невалидных TCM_DELETEITEM.
Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).

PS Твой вариант пока не продумывал.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Sun Oct 02, 2005 12:58    Post subject: Reply with quote

Volniy wrote:

1) Отредактировать файл с вкладками и загрузить его (или изменить непосредственно сам ини-файл Тотала и перезагрузить последний)

Это очевидное решение, но относительно долгое и некрасивое - на экране мигание сплошное, окна то открываются, то закрываются...
Quote:

2) Послать немножко мессаг таб контролам TMyTabControl
TCM_GETITEMCOUNT -> в цикле TCM_GETITEM -> для невалидных TCM_DELETEITEM.

Volniy, а где про это почитать? Я сейчас на С++ пишу, хотя раньше много на чем писал, но ведь здесь немножко не то - ТС на Дельфи написан... Я понимаю, что посылка сообщений от языка не зависит, но в Микрософтовских продуктах, насколько я понимаю, эти сообщения пишутся не как TCM_... а как WM_... Не силен я пока в посылке сообщений, просто другими темами занимался. Не подкинешь ссылочку на мануал?
Quote:
Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).

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



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Oct 02, 2005 14:36    Post subject: Reply with quote

Вахмурка wrote:
Volniy, а где про это почитать? Я сейчас на С++ пишу, хотя раньше много на чем писал, но ведь здесь немножко не то - ТС на Дельфи написан... Я понимаю, что посылка сообщений от языка не зависит, но в Микрософтовских продуктах, насколько я понимаю, эти сообщения пишутся не как TCM_... а как WM_... Не силен я пока в посылке сообщений, просто другими темами занимался. Не подкинешь ссылочку на мануал?

Язык программирования тут ни причем - Tab это же из Common Controls. Эта ссылка на статьи MSDN в сетке, файлик из CD версии MSDN называется Shellcc.chm. А для экспериментов с окнами и сообщениями настоятельно рекомендую InqSoft Window Scanner (must have однозначно!).
Quote:
Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).

Quote:
...и, скорее всего, последствия будут грустные.

Не торопись... Я вот сейчас попробовал реализовать все это - и не обнаружил никаких проблем (только не удаляй активную вкладку, а она легко определяется через мессагу TCM_GETCURSEL).
Короче, я считаю, что этот мой вариант все-таки COOL Smile Будет время и желание - впихну как новый метод в свой TC Helper.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Mon Oct 03, 2005 20:03    Post subject: Reply with quote

MSDN у меня и самого есть Smile. Я даже прогу писал с табконтролами. Я пока не разобрался с посылкой сообщений извне. То есть когда я сам создал табконтрол, послать ему сообщение - как два байта об асфальт. А вот из скрипта, да еще в чужое приложение... У-у-у!
Ладно, Volniy, если ты считаешь, что sapienti sat est (для умного достаточно), буду делать вид, что я умный. Спасибо
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Oct 04, 2005 02:16    Post subject: Reply with quote

Вахмурка wrote:
То есть когда я сам создал табконтрол, послать ему сообщение - как два байта об асфальт. А вот из скрипта, да еще в чужое приложение... У-у-у!

Странно, что тебя это смущает...Ты же в своих скриптах шлешь мессаги окну Тоталу? Тут те же яйца Smile Чтобы послать сообщение Tab контролу всего-то надо вычислить хендл его окна (для этого достаточно FindWindow(Ex). Я не пойму, в чем тут у тебя загвоздка? Или в PowerPro недостает функциональности (извини, плохо знаю набор его функций) ? Мне-то кажется найти окно по классу там просто плевое дело.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Wed Oct 05, 2005 23:07    Post subject: Reply with quote

Видимо, ты прав. У меня до этого просто руки не дошли (надеюсь, что уже доросли, но просто не дошли). Я мыслил в точности так, как ты написал, только надо было просто сесть и попробовать. Есть, есть в PowerPro средства посылки сообщения окну с известным хэндлом (сиречь декриптором). И хэндл определить я умею. В любом случае, ты мне очень продуктивно советуешь. Если удастся все это сделать, пропишу тебя в качестве соавтора скрипта.
Еще раз спасибо.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Thu Nov 24, 2005 15:18    Post subject: Reply with quote

2Volniy
Предлагаю отчет о достигнутых успехах и вопрос. Напомню - ты предложил использовать сообщения TCM_ для управления вкладками.

Пункт I. Команда TCM_DELETEITEM
1. Открываем две вкладки: корни дисков c и d;
2. Делаем текущей первую (c);
3. Пытаемся удалить вкладку №0 (т. е. c). Выходит очень грустная картина, о чем ты и предупреждал;
4. Теперь вместо п. 2 делаем текущей вторую (d);
5. Опять удаляем №0. На первый взгляд - все зашибись. Сохранив конфигурацию, видим отсутствие раздела [righttabs], как и должно быть. Но:
а) Несмотря на то, что флаг "Show tab header also when there is only one tab" сброшен, действительность противоречит настройке;
б) При попытке выдать команду opentabs "что-нибудь.tab" вылезает скукота.

6. Продолжаем. Теперь открываем три вкладки: c, d и е;
7. Делаем активной третью;
8. Удаляем первую;
9. Получаем следующее: две вкладки "с вывесками" d и е. Казалось бы, зашибись. Но "под вывеской" d видим корень c (это написано в строке Current directory). А вот вкладка с названием е: показывает на е:. То же происходит с бОльшим числом вкладок - заголовки вкладок уничтожаются, а список файлов, путь, содержание вкладки, как хочешь назови - нет. Получается асинхронность;
10. Команда opentabs по-прежнему ведет к скукоте.

Так что скажи мне честно, Volniy: это в голове моей опилки и руки не оттуда растут, или Тотал просто не приспособлен к такому насилию над собой?

Пункт II. Команда TCM_DELETEALLITEMS
Ну о-очень грустный результат...

Пункт III. Команды TCM_GETCURFOCUS, TCM_GETCURSEL, TCM_GETITEMCOUNT, TCM_GETROWCOUNT,
TCM_GETUNICODEFORMAT, TCM_SETCURFOCUS, TCM_SETCURSEL, TCM_SETMINTABWIDTH

Работают!

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



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Nov 24, 2005 17:54    Post subject: Reply with quote

Вахмурка wrote:
Так что скажи мне честно, Volniy: это в голове моей опилки и руки не оттуда растут, или Тотал просто не приспособлен к такому насилию над собой?

Да нормально у тебя с головой, раз уж так лихо с посылкой сообщений разобрался Smile Скорее тут второе, и я это предполагал. Я думаю, что Ghisler ведет какой-то свой учет закладок и их индексацию тоже, не сверяясь с их реальным количеством (да и чего ему сверяться-то, он ведь ощущает себя полным хозяином, а ту мы со своими хаковыми делами влезаем). В любом случае нужно будет еще хорошенько подумать до использования этих команд в скриптах. А жаль.

Кстати, я тут на днях пробовал посылать файловым панелям сообщения для списков, они в основном тоже работают (например, можно произвольно выставлять высоту строк).
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
Goto page 1, 2  Next
Page 1 of 2

 
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