Сообщения тоталу

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Хотел подсоединиться заново по FTP при ошибке подключения, отправляю сообщение.
const
cm_FtpConnect=550; // Connect to FTP
SendMessage(hParent, WM_USER + 51, cm_FtpConnect, 0)
Опа! Программа останавливается до нажатия кнопки Соединить или Отмена. А я ещё и Enter хотел нажать вдогонку.. Не получается.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Моторокер писал(а):Программа останавливается до нажатия кнопки Соединить или Отмена. А я ещё и Enter хотел нажать вдогонку..
Попробуй PostMessage вместо SendMessage. Должно помочь :)
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Работает. Теперь в Total Commander вместо ненужного сообщения «Сервер не найден» выводится FTP диалог.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

На случай, если кто-то не заметил:
15.09.06 Added: Support for accessibility tools (e.g. for blind users) to main lists+separate tree+sync+CD-Tree, allows to retrieve current line via LB_GETTEXT
Т.о., семёрка наконец-то предоставляет простой и эффективный способ получения списка файлов из своей панели! Налетай, народ. :)
Почему же, ё-моё, ты нигде не пишешь "ё"?
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Да, обнаружил в твоем переводе History. Зверски обрадовался. :D Спасибо.
Аватара пользователя
Yams
Сообщения: 115
Зарегистрирован: Пн окт 17, 2005 16:31
Откуда: Тверь
Контактная информация:

Сообщение Yams »

Т.о., семёрка наконец-то предоставляет простой и эффективный способ получения списка файлов из своей панели! Налетай, народ. :)
Ооо, спасибо огромное за информацию!!! Буду смотреть, изучать! Если это то, что думаю, буду просить всех пользователей тулсы моей переходить на седьмую версию!!!
In Pascal we trust
iglezz
Сообщения: 48
Зарегистрирован: Ср дек 08, 2010 18:38

Сообщение iglezz »

Как через SendMessage можно передать команде cm_List имя файла?

Такой вот скрипт на AutoIt не работает — открывает файл под курсором

Код: Выделить всё

$hwnd = WinGetHandle("Total Commander")
If NOT @error Then
	DllCall("user32.dll", "int", "SendMessage", "hwnd", $hwnd , "int" , 1075, "int", 903 , "str", "c:\temp\test.txt" )
EndIf
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Как через SendMessage можно передать команде cm_List имя файла?
Насчет SendMessage не знаю, но указанная задача решается так:

Код: Выделить всё

%COMMANDER_PATH%\Totalcmd.exe /o /S=L имя_файла
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

iglezz
Сообщения: 48
Зарегистрирован: Ср дек 08, 2010 18:38

Сообщение iglezz »

Эти варианты я и так знаю. Нужно именно через SendMessage/PostMessage. Гугление, увы, ничего не дало :(
Сгодится пример на любом языке, разберусь как-нибудь.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Попробовал. Не у тебя одного ничего не получилось :(
Кстати, попробуй следующее:

Код: Выделить всё

TOTALCMD#BAR#DATA
cm_List

%COMMANDER_PATH%\TOTALCMD.EXE
cm_List


903
и посмотри на поля Parametrs и Start path получившейся кнопки. Наверное, это ж-ж неспроста.
Похоже, в такой постановке твоя задача тупо не решается.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

iglezz
А не проще написать для каких целей такая свистопляска? Может, другое решение найдётся.
iglezz
Сообщения: 48
Зарегистрирован: Ср дек 08, 2010 18:38

Сообщение iglezz »

Вахмурка
Мне из собственного скрипта надо вызвать листер, что накладывает ограничения на используемые методы. А вариант с запуском totalcmd.exe /S=L просто медленный, но пока приходится его использовать.

Flasher
Прикручиванием просмотра разных файлов занимаюсь. Для тех случаев, когда плагины либо не устраивают чем-то, либо просто отсутствуют.
Методика такова: просматриваемый файл конвертером преобразуем во что-нибудь смотрибельное листером, после чего листером его и открываем.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

iglezz
Правильно ли я понял, что нужно на одну кнопку/команду повесить автоматический выбор при открытии любого файла под курсором либо листерного плагина, либо программы? Только не совсем ясно, при чём тут конвертер? Он тоже в этом скрипте фигурирует?
Или это надо на Alt+F3 (кн. "По типам файлов...") повесить?
iglezz
Сообщения: 48
Зарегистрирован: Ср дек 08, 2010 18:38

Сообщение iglezz »

Flasher писал(а):iglezz
Правильно ли я понял, что нужно на одну кнопку/команду повесить автоматический выбор листерного плагина при открытии любого файла под курсором? А то я не совсем понимаю, что значит "преобразуем конвертером".
Не совсем так.

Есть скрипт (пока это просто батник, готовящийся превратится в autoit-скрипт). Скрипту в качестве параметра передаётся имя файла под курсором. Скрипт проверяет расширение файла и, если это требуется, производит преобразование в один из удобоваримых для листера форматов. После чего, собственно, вызывается листер.

Для наглядности сам скрипт (подчищенный от отладочных echo и т.п.):

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion

set paramstr=%1
set fext=%~x1
if not %fext%A==A set fext=%fext:.=%

set viewfile=%1
set tempfile=0

if "%fext%"=="svg" (
	set tempfile=1
	set viewfile=%TEMP%\tmp%DATE:.=%%RANDOM%.png
	rsvg-convert.exe -o "!viewfile!" -f png -a -w 768 -h 384 "%~1"
	goto viewInLister
)

:viewInLister

"%commander_path%\totalcmd.exe" %commander_cmdline% /O /S=L "%viewfile:"=%" & (
echo.
)

if %tempfile%==1 (
	if exist "%viewfile:"=%" (
		del /f /q "%viewfile:"=%"
	)
)
Ответить