MVV, а нельзя это сделать с помощью TCFS2? "sendmsg(findwnd(`TTotal_cmd`), LB_GETXXX, 0, 0, 1)" похоже всегда возвращает либо 1, либо 0, причем без разницы отправляешь окну TTotal_cmd или TMyListbox.Этими вашими автохоткеями можно решить вопрос: по нажатию Вниз посылаешь панели сообщение LB_GETCOUNT (wParam=lParam=0), затем LB_GETCARETINDEX (wParam=lParam=0), и если ...
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Сообщения необходимо посылать именно панелям, т.к. они являются представителями класса окон-списков и реагируют на эти сообщения, возвращая информацию о себе. А из TCFS2 получить дескрипторы окон панелей не получится.
Говоря об "автохоткеях", я подразумевал именно перехват нажатий клавиш с соответствующей обработкой, TCSF2 этим не занимается.
Я пробовал отправлять панелям указанные сообщения (из InqSoft Window Scanner), возвращаемые значения соответствуют действительности.
Говоря об "автохоткеях", я подразумевал именно перехват нажатий клавиш с соответствующей обработкой, TCSF2 этим не занимается.
Я пробовал отправлять панелям указанные сообщения (из InqSoft Window Scanner), возвращаемые значения соответствуют действительности.
Имею левую панель с дескриптором окна $20462.
Выполняю в командной строке:
И в параметр lpos секции tcfs2 файла wincmd.ini записывается правильное значение текущей позиции ($19f - это LB_GETCARETINDEX).
Выполняю:
И курсор сдвигается на 1 элемент вверх ($19e - это LB_SETCARETINDEX).
Выполняю в командной строке:
Код: Выделить всё
tcfs2 /ef "set_tcini(tcfs2, lpos, sendmsg($20462, $19f))"Выполняю:
Код: Выделить всё
tcfs2 /ef "sendmsg($20462, $19e, sendmsg($20462, $19f)-1, 0)"дошло, я вешаю на кнопку "sendmsg(findwnd(`TTotal_cmd`), $19f)" и вижу в окне spy++ текущую позицию GetCaretIndex, затем вешаю на ту же кнопку cmd.exe и вижу то же самое, оказывается не я один хочу получить позицию курсора
Хотел красиво решить проблему потери индекса файла в панели ТС после multirename, если курсор находится среди выделенных файлов, не знаю сделает-ли это Гислер. Сейчас тупо повесил на ctrl+down
позиционирует курсор на первом файле после выделенных, на нем и остается курсор после MRT.
{end} ушли в конец списка
2054 - cm_GotoPrevSelected попали на последний выделенный
^() перед {down} - как бы "ловушка" для ctrl, чтобы срабатывал down, а не циклился ctrl+down
Хотел красиво решить проблему потери индекса файла в панели ТС после multirename, если курсор находится среди выделенных файлов, не знаю сделает-ли это Гислер. Сейчас тупо повесил на ctrl+down
Код: Выделить всё
param=/ef "msg($0B, 0, 0) send(`{end}`) tcm(2054,1) send(`^(){down}`) msg($0B, 1, 0) tcm(2918)"{end} ушли в конец списка
2054 - cm_GotoPrevSelected попали на последний выделенный
^() перед {down} - как бы "ловушка" для ctrl, чтобы срабатывал down, а не циклился ctrl+down
MVV
А ты можешь сделать, чтобы в tem запускались команды с параметрами, где задействован %A?
А ты можешь сделать, чтобы в tem запускались команды с параметрами, где задействован %A?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Они же и так запускаются. Или я чего-то не знаю? Для команды в tem можно указать параметры, и они будут подставлены тоталом вместо %A...
Например, юзер-команда em_Cd с командой cd и параметром %A. И можно делать так:
Или юзер-команда em_Exec с командой Exec.exe (из Virtual Panel) и параметром %A, и можно из TCFS2 запускать любые программы:
Аналогичным образом можно написать юзер-команды для смены набора колонок, загрузки шаблона синхронизации и т.п.
Например, юзер-команда em_Cd с командой cd и параметром %A. И можно делать так:
Код: Выделить всё
TCFS2 /ef "tem(`em_Cd c:\`)"Код: Выделить всё
TCFS2 /ef "tem(`em_Exec notepad.exe d:\1.txt`)"А если вместо notepad.exe указать полный путь до проги с пробелами в пути?
[cut]Кстати, а в чём прикол, что у тебя Exec занял ровно 1 Кб?[/cut]
[cut]Кстати, а в чём прикол, что у тебя Exec занял ровно 1 Кб?[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Там проблема с кавычками. Чтобы указывать полный путь с пробелами, надо этот путь в кавычки заключать. Но тогда это будет работать только из TCFS2.ini:
Я не придумал пока, как красиво добавить возможность вставки кавычек через командную строку.
Ещё тотал не поддерживает юникод в сообщениях вызова юзер-команд.
[cut]Да нет там прикола, всё нормально, минимум кода, точка входа переопределена, чтобы не включать CRT в файл, и секции кода и данных объединены.
Когда секция всего одна, на заголовок хватает 512 байт, и секция уложилась в 512. В 64-битном варианте есть ещё неотключаемая секция, поэтому заголовок 1024 байта плюс две секции.[/cut]
Код: Выделить всё
test=tem(`em_Exec "C:\Program Files (x86)\7-Zip\7zFM.exe" "F:\My Archive.7z"`)Код: Выделить всё
TCFS2 /ei testЕщё тотал не поддерживает юникод в сообщениях вызова юзер-команд.
[cut]Да нет там прикола, всё нормально, минимум кода, точка входа переопределена, чтобы не включать CRT в файл, и секции кода и данных объединены.
Подобного как раз и требуется избежать, чтобы не плодить лишнего в конфигах (таких команд будет много). Хотя бы для начала без параметра к проге (аля notepad).MVV писал(а):Но тогда это будет работать только из TCFS2.ini
Отсутствие Юникода в данном случае совершенно не пугает.
[cut]Заголовок 512 + секция 512. Хм. Занятно.[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Да всё возможно, но не знаю, насколько это правильно игнорировать двойные кавычки внутри косых.