Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Goto page Previous  1, 2, 3 ... 126, 127, 128
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
lz57005



Joined: 05 Mar 2020
Posts: 8
Location: Беларусь

Post (Separately) Posted: Thu Nov 19, 2020 16:32    Post subject: Reply with quote

Теперь вопрос: можно ли нажать кнопку в окне используя 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
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4793
Location: Ростов-Дон

Post (Separately) Posted: Mon Nov 23, 2020 12:49    Post subject: Reply with quote

Теоретически можно послать окну WM_COMMAND с идентификатором кнопки, и в классических окнах Windows идентификаторы зашиваются в ресурсы и, как правило, неизменны. Но на практике это весьма проблематично, т.к. тотал унаследовал от Delphi динамическое назначение идентификаторов оконных элементов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 8
Location: Беларусь

Post (Separately) Posted: Mon Nov 23, 2020 15:45    Post subject: Reply with quote

Если рассмотреть конкретный пример?
Файл - Внутренние ассоциации (только в 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
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4793
Location: Ростов-Дон

Post (Separately) Posted: Wed Nov 25, 2020 11:50    Post subject: Reply with quote

ModalResult - это выдумка Delphi, с ними нельзя работать через Windows API.

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

А потом найденной кнопке по идее можно послать какое-нибудь сообщение о нажатии кнопки или клике мыши.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2377

Post (Separately) Posted: Wed Nov 25, 2020 17:21    Post subject: Reply with quote

lz57005 wrote:
как завставить TC перечитать секцию Association в wincmd.ini

Может, здесь что-то полезное найдётся...
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 8
Location: Беларусь

Post (Separately) Posted: Fri Apr 23, 2021 10:58    Post subject: Reply with quote

Возможно кому-то пригодится, решение с перечитыванием внутренних ассоциаций, пришлось упорно изучать логи сообщений в spy++ ))

Code:

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


первое сообщение провоцирует перечитывание секции Associations
второе сообщение обновляет кэш иконок типов файлов
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2377

Post (Separately) Posted: Sat Apr 24, 2021 12:15    Post subject: Reply with quote

lz57005
Решение работает.
Визуально окно TC передёргивается довольно сильно при этом. Сопоставимо с вариантом /ef "tcm(519,1) eval(send_wait({enter},findwnd(TDlgCustomColors)))", несмотря на мелькающее в нём окно диалога.
Back to top
View user's profile Send private message
lz57005



Joined: 05 Mar 2020
Posts: 8
Location: Беларусь

Post (Separately) Posted: Sun Apr 25, 2021 12:31    Post subject: Reply with quote

sa
ну иначе никак, но факт отсутсвия кликания и окон радует, и, формально, если немного помучать spy++ подобный метод можно экстраполировать на кучу нереализованных в inc фичах, именно из-за этого после ночи в переводе dec hex я и словил предупреждение от авады))) очень хотелось поделится решением)))
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 9895
Location: Россия, Саратов

Post (Separately) Posted: Sun Apr 25, 2021 13:27    Post subject: Reply with quote

lz57005
...А сейчас вам придётся словить ещё одно предупреждение. Всё за те же заглавные буквы и точки (без них, в отличие от смайликов, тут обходиться не принято.) Категорически советую приучиться к порядку и не испытывать далее терпение модераторской команды.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2377

Post (Separately) Posted: Mon Apr 26, 2021 11:52    Post subject: Reply with quote

lz57005 wrote:
первое сообщение провоцирует перечитывание секции Associations

Без этого сообщения что-то не так идёт?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4793
Location: Ростов-Дон

Post (Separately) Posted: Sat May 01, 2021 19:44    Post subject: Reply with quote

А если добавить блокировку перерисовки окна, глаже станет?
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2377

Post (Separately) Posted: Sat May 01, 2021 20:12    Post subject: Reply with quote

MVV
Субъективно, вариант с msg(1045,0,0) становится глаже - файловые панели меньше дёргаются, а вариант с tcm(519,1), наоборот, становится хуже: окно диалога по-прежнему мелькает, ещё и добавляется передёргивание панели инструментов, строки состояния и т.д, как в первом варианте.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 126, 127, 128
Page 128 of 128

 
Jump to:  
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