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 

[TC9] Сообщение WM_USER+50 с wparam
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Thu Jun 09, 2016 14:20    Post subject: Reply with quote

В TC9.0b1 добавлено
Quote:
- Send WM_USER+50 with wparam=1..29 -> returns window handle of control. Controls are: 1=leftlist, 2=rightlist, 3=active list, 4=inactive list, 5=leftheader, 6=rightheader, 7=leftsize, 8=rightsize, 9=leftpath, 10=rightpath, 11=leftinfo, 12=rightinfo, 13=leftdrives, 14=rightdrives, 15=leftpanel, 16=rightpanel, 17=bottompanel, 18=lefttree, 19=righttree, 20=cmdline, 21=curdirpanel, 22=inplaceedit, 23=splitpanel, 24=leftdrivepanel, 25=rightdrivepanel, 26=lefttabs, 27=righttabs, 28=buttonbar, 29=buttonbarvertical64)
- Send WM_USER+50 with wparam set to 1000 to get active panel: 1=left, 2=right
- Send WM_USER+50 with wparam set to 1001/1002 to get number of items in left/right list
- Send WM_USER+50 with wparam set to 1003/1004 to get total number of items (including those hidden by quick filter
- Send WM_USER+50 with wparam set to 1005/1006 to get total number of selected items
- Send WM_USER+50 with wparam set to 1007/1008 to get index of current item (caret)
- Send WM_USER+50 with wparam set to 1011/1012 to get index of first file in list (-1 if there are no files)
- Send WM_USER+50 with wparam set to 1009/1010 to get index of first item (0 if there is no updir, 1 otherwise)
- Send WM_USER+50 with wparam set to 1011/1012 to get index of first file in list (-1 if there are no files)


Добавлено:
Тема на оффоруме


Last edited by Skif_off on Fri Jul 01, 2016 15:01; edited 1 time in total
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sun Jun 12, 2016 02:21    Post subject: Reply with quote

К посту выше: не понял, почему Гислер пишет window handle of control, если возвращется ControlID, но работает всё. Расписывать на знакомых мне языках не буду, простейший вызов DllCall (SendMessage) возвращет массив с ControlID (или просто число с wparam=10хх), дескриптором главного окна ТС, значением wparam, 1075 (WM_USER+50 или WM_USER+51?) и что-то ещё (видимо, отсутствие ошибки - 0). Нужное - в первой ячейке массива ([0]), если элемент выключен, то в первой ячейке массива возвращает 0.

Добавлено спустя 11 минут:

P.S. А может и не всё: загнал всё в массив и в цикле слал х32-версии - поленился прогнать всё снова на х64.

P.P.S. Number of items включает в себя строку "..".
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Fri Jul 01, 2016 15:32    Post subject: Reply with quote

Отсюда:
Quote:
1. Наверно не WM_USER+50 а WM_USER+51
2. Мне выдаёт хендлы

1. Наверное, нет: у меня WM_USER+51 не срабатывет. WM_USER+51 для вызова внутренних команд в wParam, включая команды с параметрами в ТС9.
2. У меня выдаёт ID контролов (AutoIt 3.3.8.1, 3.3.12.0)
Quote:
а) Из первых 4-х 2 точно должны быть одинаковыми , т.к. левая, правая, активная, неактивная панели (оказывается 3 и 4 - это хендлы панелей инструментов)
б) 5 и 6 пусто, хотя заголовок физически есть
в) с 11 по 14 leftinfo... что это? это точно не хендл...
г) 28 и 29 пусто , хотя оба бара включены

а) Точно одинаковые и именно списки файлов/папок, никаких панелей инструментов.
б) Не пусто, но не понял, что это, и не удалось забрать текст из контрола (ControlGetText() возвращает пустую строку).
в) Размер и свободное место дисков над файловыми панелями, потом комбобоксы с дисками (Окно выбора дисков)
г) У меня работает в ТС обеих разрядностей.
 Мой скрипт для проверки

Собственно, кое-что уже использую.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Fri Jul 01, 2016 19:55    Post subject: Reply with quote

У меня вроде все пучком.
По мотивам сообщений с 10** нацарапал скрипт на PowerPro
 PanelInfo
Что касается сообщений с параметрами от 1 до 30, то скрипт еще проще:
 
Что конкретно не устраивает? Какой хендл/текст не удается получить?
Quote:
P.P.S. Number of items включает в себя строку ".."
У меня нет. Тестил на:
* Директориях с файлами и директориями (общий случай);
* То же, только с файлами;
* То же, только с директориями;
* Пустых директориях;
* Сетевом окружении.
Надо учитывать, что updir тоже считается за "элемент".
Quote:
5 и 6 пусто, хотя заголовок физически есть
Header - это загаловки колонок. Какой текст ты хочешь там увидеть? Возможно, ссылку на массив, где находятся тексты заголовков всех колонок. Даже если это так, я вижу в этом мало смысла. Ведь эти заголовки суть произвольный текст, введенный пользователем.
Вообще я бы предпочел программно получать текущий набор колонок и, главное - способ сортировки (номер колонки и маркер прямой/обратный).
Гислера можно понять. Всяческие скрипто- и утилитописцы (я в том числе) давно просили у него расширения способов программного управления Тоталом. Он сказал: "Вам хочется хендлов? Их есть у меня", и вывалил список параметров сообщений. Знаешь, что это - пользуйся, не знаешь - не обращай внимания.
Например, коды 11 и 12 позволяют узнать свободное место на текущих дисках. Кому-то, глядишь, и пригодится.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sat Jul 02, 2016 01:28    Post subject: Reply with quote

Вахмурка wrote:
У меня нет. Тестил на:
...
Надо учитывать, что updir тоже считается за "элемент".

Так "нет" или "считается"? Smile Например, в папке три каталога - ТС показывает 4 элемента, у меня везде, где есть "..", number на единицу больше реального количества папок/файлов (сетевое окружение не проверял).
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sat Jul 02, 2016 01:33    Post subject: Reply with quote

Я тебя не понял. Я думал, что число элементов выдается как "..2", например. Ты использовал нестандартную терминологию. Не нравится updir, скажи "вход в директорию" или, согласно переводу Власова-Казакова: "элемент [..]"
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sat Jul 02, 2016 13:33    Post subject: Reply with quote

Вахмурка
Число - оно и есть число, откуда там точки в начале?
Прошу прощения, с LB_GETTEXT возился в подробном виде, проверка была попутной - вот и ляпнул "строка" вместо "элемент". И у меня почему-то первая бета запустилась без квадратных скобок в именах каталогов (в wincmd.ini только UseIniInProgramDir=7), поэтому написал "..", а не "[..]", что было бы понятнее, наверное.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Jul 28, 2016 01:37    Post subject: Reply with quote

; 08.06.16 Added: Send WM_USER+50 with wparam set to 1003/1004 to get total number of items (including those hidden by quick filter (32/64)
; 08.06.16 Added: Send WM_USER+50 with wparam set to 1001/1002 to get number of items in left/right list (32/64)

А в чём разница?
Посылаю 1002 и 1004 - в обоих случаях получаю одинаковый ответ.
Активирую Ignore List и добавляю туда несколько файлов. Опять посылаю 1002 и 1004 - получаю одинаковый ответ (в обоих случаях скрытые файлы не учитываются).
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Jul 28, 2016 01:54    Post subject: Reply with quote

По описанию первый случай и должен отличаться от второго только в случае сокращения списка при быстрой фильтрации.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Jul 28, 2016 02:13    Post subject: Reply with quote

Flasher wrote:
По описанию первый случай и должен отличаться от второго только в случае сокращения списка при быстрой фильтрации.

Всё, понял.
Сразу не сообразил, что за фильтрация имелась в виду.

Тут ещё вроде баг нарисовался с 1011/1012. Судя по описанию, должно возвращать -1 в случае отсутствия файлов в панели. У меня другой результат получается (на чистом Тотале). Проверьте, отпишитесь:
http://www.ghisler.ch/board/viewtopic.php?t=45068
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Thu Jul 28, 2016 16:16    Post subject: Reply with quote

LonerD
Win7x64, на AutoIt пробовал так:
 Hidden text

(AutoIt3.exe)
Возвразщает "4294967295" только при сочетании AutoItx64 + TCx86.


Last edited by Skif_off on Tue Aug 02, 2016 05:33; edited 1 time in total
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Thu Jul 28, 2016 21:44    Post subject: Reply with quote

Да, точно. Я ж не написал как получаю этот результат. Добавил в багрепорт.
AutoHotkey последней версии 32х битный (только такой всегда использую) и обе версии Тотала х32 и х64.
Скрипт самый простейший
Code:
#NoEnv
#NoTrayIcon
  SendMessage, 1074, 1011, 0, , ahk_class TTOTAL_CMD
  MsgBox, % ErrorLevel
ExitApp

_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Tue Aug 02, 2016 06:08    Post subject: Reply with quote

LonerD
Не понял, признано баг-репортом или нет? Посмотрел ещё раз про ErrorLevel, похоже, не баг и вам (автору скрипта) самому нужно пересчитывать?

Похоже, тип возвращаемого параметра должен быть "int", а не "lresult"?
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Tue Aug 02, 2016 14:20    Post subject: Reply with quote

Я тоже не понял. Вроде как сошлись на том, что не баг.
Почему у меня при первых попытках получалось 75 в конце числа вместо 95 - не знаю (я человек невнимательный, но помню, что тогда очень старательно выписывал результат, стараясь не ошибиться).
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Tue Aug 02, 2016 23:53    Post subject: Reply with quote

LonerD wrote:
очень старательно выписывал результат, стараясь не ошибиться

А буфер обмена на что? Smile

Наверное, можно проверять значение и при получении 4294967295 - использовать 1003/1004 для проверки (не хочется менять канонiчную функцию в AutoIt).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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