Вахмурка

|
Posted: Fri Jul 01, 2016 19:55 Post subject: |
|
|
У меня вроде все пучком.
По мотивам сообщений с 10** нацарапал скрипт на PowerPro PanelInfo Code: | local hwnd = win.handle("c=TTOTAL_CMD")
local Left = "Left: "
local Right = "Right: "
local f1L = win.sendmessage(hwnd, 0x400+50, 1011, 0) //index of first file in list (-1 if there are no files)
local f1R = win.sendmessage(hwnd, 0x400+50, 1012, 0)
Left ++= ifelse(f1L == -1, "Only dirs, ", f1L - 1 ++ " dirs, ")
Right ++= ifelse(f1R == -1, "Only dirs, ", f1R - 1 ++ " dirs, ")
local i1L = win.sendmessage(hwnd, 0x400+50, 1009, 0) //index of first item (0 if there is no updir, 1 otherwise)
local i1R = win.sendmessage(hwnd, 0x400+50, 1010, 0)
Left ++= ifelse(i1L, "updir, ", "no updir, ")
Right ++= ifelse(i1R, "updir, ", "no updir, ")
local CurL = win.sendmessage(hwnd, 0x400+50, 1007, 0) //index of current item (caret)
local CurR = win.sendmessage(hwnd, 0x400+50, 1008, 0)
Left ++= "index " ++ CurL ++ ", "
Right ++= "index " ++ CurR ++ ", "
Left ++= ifelse(CurL, ifelse(not f1L || CurL < f1L, "dir", "file"), ifelse(i1L, "updir", "dir")) ++ " is current, "
Right ++= ifelse(CurR, ifelse(not f1R || CurR < f1R, "dir", "file"), ifelse(i1R, "updir", "dir")) ++ " is current, "
local SelL = win.sendmessage(hwnd, 0x400+50, 1005, 0) //total number of selected items
local SelR = win.sendmessage(hwnd, 0x400+50, 1006, 0)
local TotL = win.sendmessage(hwnd, 0x400+50, 1003, 0) //total number of items
local TotR = win.sendmessage(hwnd, 0x400+50, 1004, 0)
Left ++= SelL ++ " of " ++ TotL - i1L ++ " selected, "
Right ++= SelR ++ " of " ++ TotR - i1R ++ " selected, "
local NumL = win.sendmessage(hwnd, 0x400+50, 1001, 0) //number of items
local NumR = win.sendmessage(hwnd, 0x400+50, 1002, 0)
Left ++= NumL - i1L ++ " total. "
Right ++= NumR - i1R ++ " total. "
win.debug(Left,Right)
quit |
Что касается сообщений с параметрами от 1 до 30, то скрипт еще проще: Code: | local hwnd = win.handle("c=TTOTAL_CMD")
local i, Hand
for(i = 1; i < 30; i++)
Hand = win.sendmessage(hwnd, 0x400+50, i, 0)
win.debug(i, Hand, win.gettext(Hand))
endfor |
Что конкретно не устраивает? Какой хендл/текст не удается получить? Quote: | P.P.S. Number of items включает в себя строку ".." | У меня нет. Тестил на:
* Директориях с файлами и директориями (общий случай);
* То же, только с файлами;
* То же, только с директориями;
* Пустых директориях;
* Сетевом окружении.
Надо учитывать, что updir тоже считается за "элемент". Quote: | 5 и 6 пусто, хотя заголовок физически есть | Header - это загаловки колонок. Какой текст ты хочешь там увидеть? Возможно, ссылку на массив, где находятся тексты заголовков всех колонок. Даже если это так, я вижу в этом мало смысла. Ведь эти заголовки суть произвольный текст, введенный пользователем.
Вообще я бы предпочел программно получать текущий набор колонок и, главное - способ сортировки (номер колонки и маркер прямой/обратный).
Гислера можно понять. Всяческие скрипто- и утилитописцы (я в том числе) давно просили у него расширения способов программного управления Тоталом. Он сказал: "Вам хочется хендлов? Их есть у меня", и вывалил список параметров сообщений. Знаешь, что это - пользуйся, не знаешь - не обращай внимания.
Например, коды 11 и 12 позволяют узнать свободное место на текущих дисках. Кому-то, глядишь, и пригодится. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|