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

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

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

Призрак
Сообщения: 16
Зарегистрирован: Пн окт 02, 2006 10:10

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

Сообщение Призрак »

Добрый день!!!! Подскажите пожалуйста, где можно посмотреть перечень комманд которые понимает тотал. SendMessage();
Заранее спасибо.................
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

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

Сообщение Volniy »

Призрак писал(а):Добрый день!!!! Подскажите пожалуйста, где можно посмотреть перечень комманд которые понимает тотал. SendMessage();
В исходниках Тотал Коммандер :lol:
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Все команды, которые можно использовать в Тотале с помошью SendMessage или PostMessage, хранятся в файле Totalcmd.inc
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Belkin писал(а):Все команды, которые можно использовать в Тотале с помошью SendMessage или PostMessage, хранятся в файле Totalcmd.inc
Ну, только не все. Это только малая их часть. Никто ведь не запретит посылать команды, отсутствующие в этом списке (ну, например, WM_GETTEXT, WM_CLOSE и пр)
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Мне кажется, что контекст слова все недвусмысленно определен вопросом:
Призрак писал(а):... где можно посмотреть перечень комманд которые понимает тотал...
Вряд ли Призрак спрашивал про WinAPI вообще. Кроме того, Totalcmd.inc гораздо более доступен :D чем исходники Тотала. Хотя, разумеется, ты прав: в этом файле - только малая часть понимаемых Тоталом команд.

А вот, к примеру, пробовал я получить выделенные в панели файлы/папки с помощью LB_GETSELITEMS и LB_GETTEXT и обломался. На выходе получается нечто никак не похожее на имена. Не знаю есть ли про это что-нибудь в исходниках (в Totalcmd.inc точно нет), но этот вопрос меня интересует. А именно: можно ли получить имена выделенных файлов/папок без копирования их в буфер и без создания кнопки или пункта в меню Запуск (с параметром %L, например). Если ты, уважаемый Volniy или кто-нибудь еще знаете, как это можно сделать, то поделитесь с народом (мной). Был бы премного благодарен.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Belkin писал(а):А вот, к примеру, пробовал я получить выделенные в панели файлы/папки с помощью LB_GETSELITEMS и LB_GETTEXT и обломался. На выходе получается нечто никак не похожее на имена.
А вот, к примеру, Microsoft® писал(а):LB_GETTEXT remarks:

If you create the list box with an owner-drawn style but without the LBS_HASSTRINGS style, the buffer pointed to by the lpszBuffer parameter will receive the 32-bit value associated with the item (the item data).
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Volniy писал(а):А вот, к примеру, Microsoft® писал(а):
Да справку-то я, разумеется, читал. Но мой вопрос был:
Если ты, уважаемый Volniy или кто-нибудь еще знаете, как это можно сделать, то поделитесь с народом (мной). Был бы премного благодарен.
Иными словами, если у тебя есть подходящий код, или ты можешь подсказать, где его взять, или, накрайняк, ты готов авторитетно заявить, что вопрос не решаем, тогда и прошу высказаться.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

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

В моих творениях (любая ссылка в подписи) сообщения шлются разным окнам ТС где-то в двух скриптах из трех. Общих законов лично мной не обнаружено, однако все можно быстро проверить - производит нужный эффект или нет. Меня тоже когда-то Volniy уму-разуму поучил малость (ссылка).
Вот тут я изложил кое-что по данному вопросу.
Упавший ТС - это самое страшное, что может при этом тебе грозить. Так что твори, выдумывай, пробуй. Иногда заба-а-авные результаты получаются...
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Belkin писал(а):Иными словами, если у тебя есть подходящий код, или ты можешь подсказать, где его взять, или, накрайняк, ты готов авторитетно заявить, что вопрос не решаем, тогда и прошу высказаться.
Ну какой же я, однако, авторитет. А если для тебя та цитата оказалась недостаточно авторитетна, то даже не знаю, как с тобой говорить. Ведь ясно же сказано, что эти ListBox-ы в Тотале не хранят в себе текст (кстати, применен еще и стиль LBS_NODATA), а значит и извлечь его оттуда невозможно. Не веришь - продолжай экспериментировать. :lol:
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

А ты не знаешь, зачем Гислер так сделал? Вернее, чем он МОГ руководствоваться?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

funduk писал(а):А ты не знаешь, зачем Гислер так сделал? Вернее, чем он МОГ руководствоваться?
Чтобы снять ограничения стандартного ListBox-а, я думаю. В частности если так не сделать, в Win95 в стандартный список больше чем 32767 элементов не вмещается. Ну и иконки рисовать надо, фон под выделенные, разные цвета шрифта и тп. Такое стандартный ListBox не может. А через OwnerDraw - хозяин-барин, делай шо хошь.
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Вахмурка писал(а):В моих творениях (любая ссылка в подписи) сообщения шлются разным окнам ТС где-то в двух скриптах из трех.
Да, твои творения я периодически внимательно просматриваю на предмет идей. Я не юзаю PowerPro (пробовал поюзать, но как-то не подсел), а вот на AutoHotkey - подсел. И поскольку я полагаю, что идеи автоматизаций значительно ценнее конкретной реализации, то и прими мои благодарности за твои труды: подхватил немало ценного.
Volniy писал(а):Ведь ясно же сказано, что эти ListBox-ы в Тотале не хранят в себе текст.
Да, это действительно ясно. Но ход моих незатейливых мыслей не касается ListBox-ов, и выглядит примерно так: если сам Тотал как-то может получать эти списки :) , значит он, вероятно, держит их где-то (в памяти процесса, например). А раз он их где-то держит, то теоретически до них можно добраться. А раз можно добраться, то нужно узнать - как. Вот, собственно, про это "как" и был мой вопрос.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Belkin писал(а):Да, это действительно ясно. Но ход моих незатейливых мыслей не касается ListBox-ов, и выглядит примерно так: если сам Тотал как-то может получать эти списки :) , значит он, вероятно, держит их где-то (в памяти процесса, например). А раз он их где-то держит, то теоретически до них можно добраться. А раз можно добраться, то нужно узнать - как. Вот, собственно, про это "как" и был мой вопрос.
Если ты пользуешься своей кредиткой для снятия наличности в банкомате, значит ты откуда-то берешь ее пин-код. А раз ты его откуда-то берешь, значит теоретически до него можно добраться. Но я даже спрашивать не буду "как"... :wink:

Вам не кажется, что мы существенно отклонились от темы?
Призрак
Сообщения: 16
Зарегистрирован: Пн окт 02, 2006 10:10

Сообщение Призрак »

Всем большое спасибо!!!! Я решил эту проблему посылая команду "cd путь " в командную строку и посылая клавишу Enter, но терь наверное переделаю через команды, насколько я понял, в качестве сообщения указываем номре, а параметры передаются как lParam????
Belkin
Сообщения: 26
Зарегистрирован: Вт фев 22, 2005 16:48

Сообщение Belkin »

Нет, в качестве сообщения указывать WM_USER+51 (1075 в десятичном виде), а wParam - берешь из Totalcmd.inc (в десятичном же виде). lParam = 0.
Т.е., смотрим в Totalcmd.inc, допустим, cm_ShowQuickSearch=2915, тогда команда будет выглядеть примерно так (в зависимости от языка, на котором ты пишешь):

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

PostMessage, 1075, 2915, 0,, ahk_class TTOTAL_CMD
Это пример для синтаксиса AutoHotkey.
Ответить