Здравствуйте,
> ST> писал, что в
> ST> тотале есть поддержка MSAA, через него и работаем.
> Дело в том, что Джоз все списки озвучивает через MSAA.
> А можно конкретнее.
Олег, Вы опять путаете два абсолютно различных класса окна, о которых я уже говорил.
ListView действительно в абсолютном большинстве случаев работает таким образом.
Он входит в Windows Shell. А вот LIST входящий в WinAPI, а более точно в Windows
User Interface (WUI) по умолчанию не поддерживает MSAA. Ну хотя бы по той причине,
что в те далёкие времена, когда закладывались основы этого класса, во времена
Windows 1.0 - 3.0 о таких вещах, как MSAA даже в завитах дядя Билл не думал.
Вот Вам классическая ситуация когда не знание основ построения операционной системы
приводит к немалой путанице.
Не знаю уж точно, является ли работа списков в тотале достижением автора такового
или достижением фирмы Борланд, но факт остаётся фактом - списки тотала, не смотря
на прямое наследование от LIST, а не от ListView, что видно хотя бы по обработке
сообщений из WUI этими списками, MSAA худо-бедно, но обслуживается.
> ST> Естественно ключи командной строки я разобрать из скриптов не могу, хотя
> очень
> ST> хотелось бы, единственный способ вычислить местонахождение этого файла
-
> это
> ST> ключики в реестре, коии я и разбираю. Если Вам хочется такое
> Я как то встречал утилитку определяющую и настраивающую wincmd.ini вроде бы
на
> www.wincmd.ru.
Вот по поводу некоей внешней подобной утилитки у меня и есть идеи. Если не удастся
избавится от использования WinCmd.ini придётся наверное её писать на Visual C,
а потом придумывать как передать строку с путём в скрипты.
> Так, же в тотале есть сообщение/комманда меню
> cm_configChangeIniFiles=581;Правка файлов конфигурации
> Тотал имеет огромное число встроенных сообщений, но они в основном выполняют
> действия, а не возвращают информацию.
> Например:
> cm_CopyFullNamesToClip=2018;Копировать в буфер имена с путями
А где Вы берёте информацию по поводу сообщений обрабатываемых в тотале? Знание
внутренних сообщений тотала сильно ускорило и улучшило бы качество скриптов,
я подозреваю.
Касаемо информационных сообщений, тут возникли бы всё равно огромные проблемы
в их использовании. Дело в том, что челюсти могут получить или отправить сообщение
только с цифровыми данными, так что получить путь можно было бы только при помощи
внешней утилитки. См. FSDN:
Description
Provides limited access to the Windows SendMessage function (See the Windows
Platform SDK or a Windows programming book for details) It is only possible
to use numeric values for wParam and lParam. No strings or other structures can
be passed. The return value is always treated as an integer.
При такой ситуации скрипты превратились бы в огромное нагромождение внешних утилиток
и связывающих их скриптов и вся эта конструкция по моему мнению потеряла бы надёжность.
> ST> на порядок. К сожалению тотал не предоставляет через MSAA информацию о
состоянии
> Я бы не был столь категоричен.
> Ведь та же самая проблема когда говориться, когда не надо не выделен, разве
это
> не информация о не выделенности, ну и она само собой сообщается через MSAA.
Если у Вас есть способ получить информацию о выделенности конкретного элемента
списка в тотале, то огласите её пожалуйста, это однозначно позволит отказаться
от использования файла WinCmd.ini и решит данную проблему более элегантно. Пока
что я такого способа не нашёл, правда и искал ещё не особенно тщательно, поскольку
был занят дописыванием скриптов для Консультанта. Стандартные подходы с ходу
не прокатили.
>>> Насчет информационных скриптов (дата, размер, время и т.д.)
>>> На каком принципе построенны информационные скрипты, на парсинге (чтении)
> строки
>>> состояния?
> ST> Информационные скрипты я ещё не писал, нет пока
> ST> необходимости, поскольку читается
> ST> информация в списке полностью.
> Как мне известно, что подавляющее большинство слепых используют краткий режим,
> а информацию предпочитают получать по клавишам. Я вто числе. А полный режим
утомителен.
Хорошо, учту.
>>> Если да то как будет решена проблема, когда расширение и размер файла сливаются
>>> в одно слово, когда размер файла десятки и сотни мегабайт, и еще более сложный
>>> случай если расширение файла содержит числа mp3, 123?
> ST> Я предполагаю, если это понадобится, получить содержимое окна, содержащего
> данную
> ST> информацию ну и соответственно уже потом раздербанивать её. А там она наверняка
> ST> с пробелами или иными разделителями, так что я думаю проблем быть не должно.
> В том то и дело, что при больших размерах, более 10 мб, сливается в одно слово,
> без пробелов и разделителей, да еще и большие размеры вовсе обрезаются.
Это печалит. Ну зрячие же как-то понимают, что представляет собой имя файла,
а что размер. Значит какое-то различие быть должно... Надо будет у зрячих знакомых
поспрашивать, как это выглядит. Пришедшая в голову сразу идея, дёрнуть имя файла
из списка и отковырять его от полученной информации в строке состояния. Просто
методом исключения. Хотя идея использования строки состояния меня не очень прельщает,
опять же потеря универсальности - а если человек отключил строку состояния? Надо
будет попробовать, заполняется ли она в невидимом режиме или нет...
До свидания.
***
Это сообщение No4968
было разослано для 314 участников дискуссионного листа
[JFWRus] Re[4]: Скрипты к Total Commander.