View previous topic :: View next topic |
Author |
Message |
lz57005
Joined: 05 Mar 2020 Posts: 26
|
(Separately) Posted: Thu Nov 19, 2020 16:32 Post subject: |
|
|
Теперь вопрос: можно ли нажать кнопку в окне используя msg, sendmsg вместо того чтобы посылать нажатие клавиш через send?
В TCFS2.core.ini есть пример взаимодействия с выпадающим списком:
Code: | ; Выбрать в выпадающем списке элемент, начинающийся с заданного текста. Параметры: текст, дескриптор окна, режим поиска (0 - точное совпадение, 1 - начало)
select=sendmsg(#2, $014E, sendmsg(#2, if(#3-0, $014C, $0158), 0, #1)) |
Предполагаю аналогичным образом можно взаимодействовать с любым контролом окна. Но непонятно как определить код самого сообщения. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
lz57005
Joined: 05 Mar 2020 Posts: 26
|
(Separately) Posted: Mon Nov 23, 2020 15:45 Post subject: |
|
|
Если рассмотреть конкретный пример?
Файл - Внутренние ассоциации (только в 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. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Nov 25, 2020 11:50 Post subject: |
|
|
ModalResult - это выдумка Delphi, с ними нельзя работать через Windows API.
Дескриптор кнопки найти можно, для этого есть функция findwnd. Искать можно по комбинации класса и текста (но в связи с тем, что у разных пользователей могут быть разные языки, по тексту окна в общем случае искать не очень надёжно) или по комбинации класса и порядкового номера кнопки в окне (но это не гарантирует результат, если надо пользоваться несколькими версиями тотала, т.к. в разных версиях номер кнопки может быть разный).
А потом найденной кнопке по идее можно послать какое-нибудь сообщение о нажатии кнопки или клике мыши. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Wed Nov 25, 2020 17:21 Post subject: |
|
|
lz57005 wrote: | как завставить TC перечитать секцию Association в wincmd.ini |
Может, здесь что-то полезное найдётся... |
|
Back to top |
|
|
lz57005
Joined: 05 Mar 2020 Posts: 26
|
(Separately) Posted: Fri Apr 23, 2021 10:58 Post subject: |
|
|
Возможно кому-то пригодится, решение с перечитыванием внутренних ассоциаций, пришлось упорно изучать логи сообщений в spy++ ))
Code: |
TCFS2.exe /ef msg(147,0,1302100) msg(1045,0,0)
|
первое сообщение провоцирует перечитывание секции Associations
второе сообщение обновляет кэш иконок типов файлов |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Sat Apr 24, 2021 12:15 Post subject: |
|
|
lz57005
Решение работает.
Визуально окно TC передёргивается довольно сильно при этом. Сопоставимо с вариантом /ef "tcm(519,1) eval(send_wait({enter},findwnd(TDlgCustomColors)))", несмотря на мелькающее в нём окно диалога. |
|
Back to top |
|
|
lz57005
Joined: 05 Mar 2020 Posts: 26
|
(Separately) Posted: Sun Apr 25, 2021 12:31 Post subject: |
|
|
sa
ну иначе никак, но факт отсутсвия кликания и окон радует, и, формально, если немного помучать spy++ подобный метод можно экстраполировать на кучу нереализованных в inc фичах, именно из-за этого после ночи в переводе dec hex я и словил предупреждение от авады))) очень хотелось поделится решением))) |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10276 Location: Россия, Саратов
|
(Separately) Posted: Sun Apr 25, 2021 13:27 Post subject: |
|
|
lz57005
...А сейчас вам придётся словить ещё одно предупреждение. Всё за те же заглавные буквы и точки (без них, в отличие от смайликов, тут обходиться не принято.) Категорически советую приучиться к порядку и не испытывать далее терпение модераторской команды. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Mon Apr 26, 2021 11:52 Post subject: |
|
|
lz57005 wrote: | первое сообщение провоцирует перечитывание секции Associations |
Без этого сообщения что-то не так идёт? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Sat May 01, 2021 20:12 Post subject: |
|
|
MVV
Субъективно, вариант с msg(1045,0,0) становится глаже - файловые панели меньше дёргаются, а вариант с tcm(519,1), наоборот, становится хуже: окно диалога по-прежнему мелькает, ещё и добавляется передёргивание панели инструментов, строки состояния и т.д, как в первом варианте. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2590
|
(Separately) Posted: Sun Apr 16, 2023 13:58 Post subject: |
|
|
MVV
В справке по команде tcini (или ini) написано "укажите просто # как value, чтобы вернуть значение ключа".
А не предвидится возможность, например, при указании `#`, возвращать строковое значение ключа? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
jentoso
Joined: 20 Dec 2007 Posts: 354
|
(Separately) Posted: Tue Aug 22, 2023 18:46 Post subject: |
|
|
MVV
Корректное изменение размера TMyListBox в настройке панели инструментов так и остается невозможным с 2019 года? _________________ TC 11.03 combo, Windows 10 x64 |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|