Открылся сайт "Total Commander и PowerPro"
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Открылся сайт "Total Commander и PowerPro"
Открылся сайт, посвященный совместной работе Total Commander и PowerPro:
http://pprotcmd.narod.ru
Скрипты, статьи, ссылки, советы, плагины, утилиты, иконки.
Добро пожаловать!
http://pprotcmd.narod.ru
Скрипты, статьи, ссылки, советы, плагины, утилиты, иконки.
Добро пожаловать!
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- LocKtaR-o-DarK
- Сообщения: 349
- Зарегистрирован: Пт авг 12, 2005 04:20
- Откуда: Москва
- Контактная информация:
Многие скрипты весьма накручены и в них даже трудновато разобраться. А некоторые просто некий набор клавиатурных команд, посылаемых Тоталу, тоесть могут быть реализованы и без тяжелой артиллерии PowerPro.
ЗЫ Вахмурка, нарисуй скрипт для установки разделителя файловых панелей в определенное положение. Я потом свой вариант покажу. Померяемся

ЗЫ Вахмурка, нарисуй скрипт для установки разделителя файловых панелей в определенное положение. Я потом свой вариант покажу. Померяемся
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Разумеется. Ничего другого и ждать было нельзя. Но можно попробовать с секундомером засечь, что быстрее.LocKtaR-o-DarK писал(а):Посмотрел сайт, но, честно говоря, большинство описанных операций делаются тоталом и без применения скриптов.
Вот это, разве что, ТС не делает ну никак:
http://pprotcmd.narod.ru/Scripts/TabTools.htm
Сделаешь - напиши как. Всем будет интересно.
А вообще скрипты (имеется в виду именно приложение их к ТС) не могут сделать того, что выходит за рамки возможностей самого ТС. Скрипт упрощает и ускоряет работу, но не более того. Об этом я написал во Введении.
2Volniy
И не надо. Где надо разбираться, я пометил синеньким.Многие скрипты весьма накручены и в них даже трудновато разобраться
Напишешь то же проще - пришли, выложу.
Пиши - выложу.А некоторые просто некий набор клавиатурных команд, посылаемых Тоталу, тоесть могут быть реализованы и без тяжелой артиллерии PowerPro
Не обещаю. Оно мне не надо. А это очень трудно - писать то, что не надо.Вахмурка, нарисуй скрипт для установки разделителя файловых панелей в определенное положение. Я потом свой вариант покажу. Померяемся
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
2Volniy
Volniy, ты редиска. Ты меня взял на слабо, как сопливого пацана. И я в течение часа занимался тем, что я никогда не буду использовать. Только чтобы слиться с тобой в экстазе "компаративной фаллометрии". Бяка ты, Volniy.
Ну, а если серьезно. Ты не совсем четко поставил задачу, и я имел право решить ее для частного случая, а именно:
1) используются только "стандартные положения" разделителя;
2) предполагается, что разделитель вертикальный, а не горизонтальный.
Больше мериться с тобой не буду (обещала лиса кур не таскать...). Хотя пути решения могу наметить, если хочешь, там все тривиально.
Volniy, ты редиска. Ты меня взял на слабо, как сопливого пацана. И я в течение часа занимался тем, что я никогда не буду использовать. Только чтобы слиться с тобой в экстазе "компаративной фаллометрии". Бяка ты, Volniy.
Ну, а если серьезно. Ты не совсем четко поставил задачу, и я имел право решить ее для частного случая, а именно:
1) используются только "стандартные положения" разделителя;
2) предполагается, что разделитель вертикальный, а не горизонтальный.
Больше мериться с тобой не буду (обещала лиса кур не таскать...). Хотя пути решения могу наметить, если хочешь, там все тривиально.
Код: Выделить всё
;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}
То, что я бяка спорить не стануВахмурка писал(а): Бяка ты, Volniy.
Ну, а если серьезно. Ты не совсем четко поставил задачу, и я имел право решить ее для частного случая
В принципе да, произвольная установка тоже достаточно просто реализуется (поиск окна панели разделителя - установка указателя мышки на нем - программное перемещение указателя в нужную позицию экрана - отпускание ), но и мне повозиться прилично пришлось. Но зато теперь этот метод может установить разделитель (пока тоже только вертикальный) в нужное положение (при любом положении и размере окна Тотала) с точностью 0,1% (!, только кому это нафиг нужноБольше мериться с тобой не буду (обещала лиса кур не таскать...). Хотя пути решения могу наметить, если хочешь, там все тривиально.
Ты зря подумал, что я до тебя докапываюсь или типа того. Мне наоборот, даже слегка стыдно стало, что вот человек такую работу нифиговую проделал, а я никак свой хелпер в релиз не выпущу, все лень матушка...
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
2VolniyVolniy писал(а):с точностью 0,1% (!, только кому это нафиг нужно.
Золотые слова! Хватит позориться нам с тобой, зас...ая инет бессмысленными скриптами.
У меня к тебе проф. вопрос. Задача: закрыть заданную вкладку, не активизируя ее (если путь указывает в несуществующее место, например). Среда разработки не имеет никакого значения. Там фишка - в арифметике: учесть количество вкладок, названия, ширину окна. Если все аккуратно продумать, можно точно указать координату над нужной вкладкой. Остается открыть вкладочное меню и послать Ctrl+W.
Есть какие-нибудь мысли на этот счет? Если хочешь, вдвоем что-нибудь сваляем. Цель стоящая, по себе знаю. Часто приходится такое делать. Я написал скрипт http://pprotcmd.narod.ru/Scripts/Subs/Subs.htm#PathVal, который лишь находит "тухлую" вкладку, но закрывать ее приходится врукопашную, а это не есть хорошо.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Есть. Я бы (сходу) предложил 2 варианта:Вахмурка писал(а): У меня к тебе проф. вопрос. Задача: закрыть заданную вкладку, не активизируя ее (если путь указывает в несуществующее место, например). Среда разработки не имеет никакого значения. Там фишка - в арифметике: учесть количество вкладок, названия, ширину окна. Если все аккуратно продумать, можно точно указать координату над нужной вкладкой. Остается открыть вкладочное меню и послать Ctrl+W.
Есть какие-нибудь мысли на этот счет?
1) Отредактировать файл с вкладками и загрузить его (или изменить непосредственно сам ини-файл Тотала и перезагрузить последний)
2) Послать немножко мессаг таб контролам TMyTabControl
TCM_GETITEMCOUNT -> в цикле TCM_GETITEM -> для невалидных TCM_DELETEITEM.
Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).
PS Твой вариант пока не продумывал.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Это очевидное решение, но относительно долгое и некрасивое - на экране мигание сплошное, окна то открываются, то закрываются...Volniy писал(а): 1) Отредактировать файл с вкладками и загрузить его (или изменить непосредственно сам ини-файл Тотала и перезагрузить последний)
Volniy, а где про это почитать? Я сейчас на С++ пишу, хотя раньше много на чем писал, но ведь здесь немножко не то - ТС на Дельфи написан... Я понимаю, что посылка сообщений от языка не зависит, но в Микрософтовских продуктах, насколько я понимаю, эти сообщения пишутся не как TCM_... а как WM_... Не силен я пока в посылке сообщений, просто другими темами занимался. Не подкинешь ссылочку на мануал?2) Послать немножко мессаг таб контролам TMyTabControl
TCM_GETITEMCOUNT -> в цикле TCM_GETITEM -> для невалидных TCM_DELETEITEM.
...и, скорее всего, последствия будут грустные.Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).
Так или иначе, за ответ спасибо. А мое предложение, согласись, и покрасивее и поуниверсальнее будет. Если его реализовать, конечно...
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Язык программирования тут ни причем - Tab это же из Common Controls. Эта ссылка на статьи MSDN в сетке, файлик из CD версии MSDN называется Shellcc.chm. А для экспериментов с окнами и сообщениями настоятельно рекомендую InqSoft Window Scanner (must have однозначно!).Вахмурка писал(а):Volniy, а где про это почитать? Я сейчас на С++ пишу, хотя раньше много на чем писал, но ведь здесь немножко не то - ТС на Дельфи написан... Я понимаю, что посылка сообщений от языка не зависит, но в Микрософтовских продуктах, насколько я понимаю, эти сообщения пишутся не как TCM_... а как WM_... Не силен я пока в посылке сообщений, просто другими темами занимался. Не подкинешь ссылочку на мануал?
Второй вариант точно работает, но нужно еще проверить, что будет после перезагрузки Тотала (он о таком удалении может ничего и не узнать).
Не торопись... Я вот сейчас попробовал реализовать все это - и не обнаружил никаких проблем (только не удаляй активную вкладку, а она легко определяется через мессагу TCM_GETCURSEL)....и, скорее всего, последствия будут грустные.
Короче, я считаю, что этот мой вариант все-таки COOL
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
MSDN у меня и самого есть
. Я даже прогу писал с табконтролами. Я пока не разобрался с посылкой сообщений извне. То есть когда я сам создал табконтрол, послать ему сообщение - как два байта об асфальт. А вот из скрипта, да еще в чужое приложение... У-у-у!
Ладно, Volniy, если ты считаешь, что sapienti sat est (для умного достаточно), буду делать вид, что я умный. Спасибо
Ладно, Volniy, если ты считаешь, что sapienti sat est (для умного достаточно), буду делать вид, что я умный. Спасибо
Странно, что тебя это смущает...Ты же в своих скриптах шлешь мессаги окну Тоталу? Тут те же яйцаВахмурка писал(а):То есть когда я сам создал табконтрол, послать ему сообщение - как два байта об асфальт. А вот из скрипта, да еще в чужое приложение... У-у-у!
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Видимо, ты прав. У меня до этого просто руки не дошли (надеюсь, что уже доросли, но просто не дошли). Я мыслил в точности так, как ты написал, только надо было просто сесть и попробовать. Есть, есть в PowerPro средства посылки сообщения окну с известным хэндлом (сиречь декриптором). И хэндл определить я умею. В любом случае, ты мне очень продуктивно советуешь. Если удастся все это сделать, пропишу тебя в качестве соавтора скрипта.
Еще раз спасибо.
Еще раз спасибо.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
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
Забавно выходит... Может, когда-нибудь и использую. Странно, что этого не сделал Гислер.
Предлагаю отчет о достигнутых успехах и вопрос. Напомню - ты предложил использовать сообщения 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
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Да нормально у тебя с головой, раз уж так лихо с посылкой сообщений разобралсяВахмурка писал(а):Так что скажи мне честно, Volniy: это в голове моей опилки и руки не оттуда растут, или Тотал просто не приспособлен к такому насилию над собой?
Кстати, я тут на днях пробовал посылать файловым панелям сообщения для списков, они в основном тоже работают (например, можно произвольно выставлять высоту строк).