Страница 2 из 3

Добавлено: Ср окт 11, 2006 16:14
Моторокер
Хотел подсоединиться заново по FTP при ошибке подключения, отправляю сообщение.
const
cm_FtpConnect=550; // Connect to FTP
SendMessage(hParent, WM_USER + 51, cm_FtpConnect, 0)
Опа! Программа останавливается до нажатия кнопки Соединить или Отмена. А я ещё и Enter хотел нажать вдогонку.. Не получается.

Добавлено: Ср окт 11, 2006 19:50
Belkin
Моторокер писал(а):Программа останавливается до нажатия кнопки Соединить или Отмена. А я ещё и Enter хотел нажать вдогонку..
Попробуй PostMessage вместо SendMessage. Должно помочь :)

Добавлено: Пн окт 30, 2006 08:19
Моторокер
Работает. Теперь в Total Commander вместо ненужного сообщения «Сервер не найден» выводится FTP диалог.

Добавлено: Вс ноя 12, 2006 18:49
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
Т.о., семёрка наконец-то предоставляет простой и эффективный способ получения списка файлов из своей панели! Налетай, народ. :)

Добавлено: Пн ноя 13, 2006 08:37
Belkin
Да, обнаружил в твоем переводе History. Зверски обрадовался. :D Спасибо.

Добавлено: Пн ноя 13, 2006 19:50
Yams
Т.о., семёрка наконец-то предоставляет простой и эффективный способ получения списка файлов из своей панели! Налетай, народ. :)
Ооо, спасибо огромное за информацию!!! Буду смотреть, изучать! Если это то, что думаю, буду просить всех пользователей тулсы моей переходить на седьмую версию!!!

Добавлено: Пн дек 20, 2010 22:31
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

Добавлено: Пн дек 20, 2010 22:42
Вахмурка
Как через SendMessage можно передать команде cm_List имя файла?
Насчет SendMessage не знаю, но указанная задача решается так:

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

%COMMANDER_PATH%\Totalcmd.exe /o /S=L имя_файла

Добавлено: Пн дек 20, 2010 22:46
Flasher

Добавлено: Пн дек 20, 2010 23:01
iglezz
Эти варианты я и так знаю. Нужно именно через SendMessage/PostMessage. Гугление, увы, ничего не дало :(
Сгодится пример на любом языке, разберусь как-нибудь.

Добавлено: Пн дек 20, 2010 23:31
Вахмурка
Попробовал. Не у тебя одного ничего не получилось :(
Кстати, попробуй следующее:

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

TOTALCMD#BAR#DATA
cm_List

%COMMANDER_PATH%\TOTALCMD.EXE
cm_List


903
и посмотри на поля Parametrs и Start path получившейся кнопки. Наверное, это ж-ж неспроста.
Похоже, в такой постановке твоя задача тупо не решается.

Добавлено: Пн дек 20, 2010 23:34
Flasher
iglezz
А не проще написать для каких целей такая свистопляска? Может, другое решение найдётся.

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

Flasher
Прикручиванием просмотра разных файлов занимаюсь. Для тех случаев, когда плагины либо не устраивают чем-то, либо просто отсутствуют.
Методика такова: просматриваемый файл конвертером преобразуем во что-нибудь смотрибельное листером, после чего листером его и открываем.

Добавлено: Пн дек 20, 2010 23:52
Flasher
iglezz
Правильно ли я понял, что нужно на одну кнопку/команду повесить автоматический выбор при открытии любого файла под курсором либо листерного плагина, либо программы? Только не совсем ясно, при чём тут конвертер? Он тоже в этом скрипте фигурирует?
Или это надо на Alt+F3 (кн. "По типам файлов...") повесить?

Добавлено: Вт дек 21, 2010 00:21
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:"=%"
	)
)