TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 127, 128, 129, 130  Next  :| |:
Total Commander -> Плагины Total Commander

#1906:  Author: lz57005 PostPosted: Thu Nov 19, 2020 16:32
    —
Теперь вопрос: можно ли нажать кнопку в окне используя msg, sendmsg вместо того чтобы посылать нажатие клавиш через send?
В TCFS2.core.ini есть пример взаимодействия с выпадающим списком:
Code:
; Выбрать в выпадающем списке элемент, начинающийся с заданного текста. Параметры: текст, дескриптор окна, режим поиска (0 - точное совпадение, 1 - начало)
select=sendmsg(#2, $014E, sendmsg(#2, if(#3-0, $014C, $0158), 0, #1))

Предполагаю аналогичным образом можно взаимодействовать с любым контролом окна. Но непонятно как определить код самого сообщения.

#1907:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Nov 23, 2020 12:49
    —
Теоретически можно послать окну WM_COMMAND с идентификатором кнопки, и в классических окнах Windows идентификаторы зашиваются в ресурсы и, как правило, неизменны. Но на практике это весьма проблематично, т.к. тотал унаследовал от Delphi динамическое назначение идентификаторов оконных элементов.

#1908:  Author: lz57005 PostPosted: Mon Nov 23, 2020 15:45
    —
Если рассмотреть конкретный пример?
Файл - Внутренние ассоциации (только в TC)...
TDlgCustomColors, Handle кнопки ОК при каждом запуске totalcmd.exe - разный. Класс TButton, Caption OK. Но эта кнопка имеет модальный результат 1.
Code:

    object Button3: TButton
      Tag = 4001
      Left = 4
      Top = 120
      Width = 110
      Height = 23
      Caption = 'OK'
      Default = True
      ModalResult = 1
      TabOrder = 4
      OnClick = Button3Click
    end

Может возможно послать ModalResult 1, вместо нажатия ОК, если handle кнопки нельзя найти?
Ну или кто-нибудь знает как завставить TC перечитать секцию Association в wincmd.ini и повешать это действие на шорткат, чтобы клавиши модификаторы не мешали посылать TAB+SPACE или ENTER.

#1909:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Nov 25, 2020 11:50
    —
ModalResult - это выдумка Delphi, с ними нельзя работать через Windows API.

Дескриптор кнопки найти можно, для этого есть функция findwnd. Искать можно по комбинации класса и текста (но в связи с тем, что у разных пользователей могут быть разные языки, по тексту окна в общем случае искать не очень надёжно) или по комбинации класса и порядкового номера кнопки в окне (но это не гарантирует результат, если надо пользоваться несколькими версиями тотала, т.к. в разных версиях номер кнопки может быть разный).

А потом найденной кнопке по идее можно послать какое-нибудь сообщение о нажатии кнопки или клике мыши.

#1910:  Author: sa PostPosted: Wed Nov 25, 2020 17:21
    —
lz57005 wrote:
как завставить TC перечитать секцию Association в wincmd.ini

Может, здесь что-то полезное найдётся...

#1911:  Author: lz57005 PostPosted: Fri Apr 23, 2021 10:58
    —
Возможно кому-то пригодится, решение с перечитыванием внутренних ассоциаций, пришлось упорно изучать логи сообщений в spy++ ))

Code:

TCFS2.exe /ef msg(147,0,1302100) msg(1045,0,0)


первое сообщение провоцирует перечитывание секции Associations
второе сообщение обновляет кэш иконок типов файлов

#1912:  Author: sa PostPosted: Sat Apr 24, 2021 12:15
    —
lz57005
Решение работает.
Визуально окно TC передёргивается довольно сильно при этом. Сопоставимо с вариантом /ef "tcm(519,1) eval(send_wait({enter},findwnd(TDlgCustomColors)))", несмотря на мелькающее в нём окно диалога.

#1913:  Author: lz57005 PostPosted: Sun Apr 25, 2021 12:31
    —
sa
ну иначе никак, но факт отсутсвия кликания и окон радует, и, формально, если немного помучать spy++ подобный метод можно экстраполировать на кучу нереализованных в inc фичах, именно из-за этого после ночи в переводе dec hex я и словил предупреждение от авады))) очень хотелось поделится решением)))

#1914:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Apr 25, 2021 13:27
    —
lz57005
...А сейчас вам придётся словить ещё одно предупреждение. Всё за те же заглавные буквы и точки (без них, в отличие от смайликов, тут обходиться не принято.) Категорически советую приучиться к порядку и не испытывать далее терпение модераторской команды.

#1915:  Author: sa PostPosted: Mon Apr 26, 2021 11:52
    —
lz57005 wrote:
первое сообщение провоцирует перечитывание секции Associations

Без этого сообщения что-то не так идёт?

#1916:  Author: MVVLocation: Ростов-Дон PostPosted: Sat May 01, 2021 19:44
    —
А если добавить блокировку перерисовки окна, глаже станет?

#1917:  Author: sa PostPosted: Sat May 01, 2021 20:12
    —
MVV
Субъективно, вариант с msg(1045,0,0) становится глаже - файловые панели меньше дёргаются, а вариант с tcm(519,1), наоборот, становится хуже: окно диалога по-прежнему мелькает, ещё и добавляется передёргивание панели инструментов, строки состояния и т.д, как в первом варианте.

#1918:  Author: sa PostPosted: Sun Apr 16, 2023 13:58
    —
MVV
В справке по команде tcini (или ini) написано "укажите просто # как value, чтобы вернуть значение ключа".
А не предвидится возможность, например, при указании `#`, возвращать строковое значение ключа?

#1919:  Author: MVVLocation: Ростов-Дон PostPosted: Sun May 14, 2023 09:29
    —
Строковые значения вроде из функций сейчас в принципе нельзя возвращать, можно только форматировать строки для передачи куда-либо. Так что пока точно нет.

#1920:  Author: jentoso PostPosted: Tue Aug 22, 2023 18:46
    —
MVV
Корректное изменение размера TMyListBox в настройке панели инструментов так и остается невозможным с 2019 года?



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 127, 128, 129, 130  Next  :| |:
Page 128 of 130

Powered by phpBB © 2001, 2005 phpBB Group