Страница 108 из 211
Добавлено: Чт май 12, 2011 10:12
Avada
HEXFIX
Чтобы получить однозначный ответ, надо задать точный и полный вопрос. Сейчас мало данных. Для начала разбираемся с шаблонами автопереключения на конкретные схемы. Секцию [AutoView] файла TWinKey.ini — в студию. И заодно проверяем, выставлены ли галки у всех визуальных схем на соответствующей странице и не отменяет ли вышележащая в списке схема действие последующей.
Добавлено: Чт май 12, 2011 13:28
VadiMGP
ask-rus писал(а):cm_ и em_ команды в них не установишь.
Ну может какую другую программу можно найти.
Но в любом случае - я сам не буду сажать кнопки в заголовок окна. В Windows нет законного способа это сделать, а возиться с незаконными выйдет себе дороже.
Мне смутно помнится, что для PowerPro были какие-то скрипты, сажающие туда кнопки, надо бы у Вахмурки уточнить, он спец по PowerPro.
Добавлено: Чт май 12, 2011 14:16
HEXFIX
Avada
Вот, пожалуйста:
Код: Выделить всё
[AutoView]
Книги=?*Книги*
Музыка=?*Музыка*
По умолчанию=?*.*
Изображения=?*Изображения*
Торренты=?*Торренты*
и не отменяет ли вышележащая в списке схема действие последующей.
Аааа... Теперь понятно! Визуальную схему "По умолчанию" надо ставить последней. Спасибо!
Добавлено спустя 9 минут 7 секунд:
Кстати, когда-то давно в этом топике писал про жуткие тормоза плагина при заходе в папку с большим количеством файлов. Это если используешь контентные плагины... Так вот, убрал я навороченную цветовую схему - никаких тормозов нет.
Добавлено: Чт май 12, 2011 16:18
Вахмурка
Мне смутно помнится, что для PowerPro были какие-то скрипты, сажающие туда кнопки, надо бы у Вахмурки уточнить
Я тоже хотел бы уточнить, куда надо "сажать" кнопки. Что такое "заголовок окна"? Это который "caption"? Если да, то "посадить" туда панель или меню - как два байта об асфальт. С cm_-командами тоже проблем не возникнет. А вот em_-команды... Можно, но сложнее. Открыть usercmd.ini, по названию команды найти раздел, считать из него ключи cmd и param и выполнить. Никогда этим не занимался, но если нужно, могу нацарапать.
Добавлено: Чт май 12, 2011 16:28
VadiMGP
Вахмурка писал(а):Что такое "заголовок окна"? Это который "caption"?
Да, совершенно верно.
Вахмурка писал(а):А вот em_-команды... Можно, но сложнее.
Никаких сложностей. Механизм отработан, давно есть програмы, скрипты, посылающие cm_ и em_ команды в тотал.
И в любом случае не надо ничего читать из usercmd.ini. Просто в случае cm_ команды надо в окно тотала послать WM_USER+51 а в случае em_ надо послать WM_COPYDATA. Все остальное тотал сделает сам.
Добавлено: Чт май 12, 2011 16:42
Вахмурка
В PowerPro это выглядит так:
где 523 - номер внутренней команды. По поводу COPYDATA сказано следующее:
sendcopydata(cl, dword, string) sends wm_copydata first window matching cl, with dwdata=dword and lpdata=string
Буду признателен, если программеры подскажут, что надо указывать вместо dwdata и lpdata.
Добавлено: Чт май 12, 2011 17:02
MVV
Вахмурка, dwdata='ME' (=0x4D45), lpdata="em_command_name\0" (нулевой байт должен являться частью передаваемого блока, поэтому указываю его в строке, у себя в коде я просто размер данных указываю на 1 больше - это третье поле структуры, передаваемой WM_COPYDATA).
Добавлено: Чт май 12, 2011 17:04
ask-rus
Я за портабельность, посему PowerPro мне не подходит, уже много где говорил об этом.
VadiMGP писал(а):Ну может какую другую программу можно найти.
Искать не буду, потому что мне эти кнопки не как кровь из носу нужны. Есть кнопки - хорошо, нет кнопок - бог с ними. А что касается Твинков, то для меня важны фиксы следующих проблем:
1. Мерцание;
2. Скрытие процесса на Панели задач при прямоугольном выделении;
3. Смещение вниз на пиксель компонентов окна TC;
4. Список дисков без отжатия Alt;
5. "Home" и "End" в Список дисков.
Обо всём этом говорилось.
Добавлено: Чт май 12, 2011 17:11
VadiMGP
Я считаю, что string должен содержать текст em_ команды (в кодировке UTF8), а dword - 0x00004d45
Добавлено спустя 6 минут 12 секунд:
MVV писал(а):это третье поле структуры, передаваемой WM_COPYDATA
Я думаю, что Вахмурка не видит эту структуру. PowerPro сам создает её. Потому он и требует только строку и dwData
Добавлено: Чт май 12, 2011 17:15
MVV
Вижу, в упомянутой им функции нет такого параметра. Потому я и включил
\0 в строку.

А кодировка там, мне кажется, должна быть Win-1251. А если UTF-8, то скорее всего с BOM, по аналогии с сообщением для
cd.
Вот с командой
cd у меня в своё время были проблемы, когда я не включал нулевой байт в размер - когда стало ясно, в чём дело, Гислер сказал, что тотал не смотрит на длину буфера, а ожидает нулевого байта в конце, поэтому этот байт обязательно нужно включать в пересылаемый блок.
Добавлено: Чт май 12, 2011 17:23
VadiMGP
MVV писал(а):А кодировка там, мне кажется, должна быть Win-1251.
В принципе можно и 1251, но тогда если wincmd.ini содержит текст более, чем на двух языках (как у меня, например), то работать будут только английский и русский. UTF8 дает решение для любого количества языков.
И да, еще один \0 там в конце действительно нужен.
Добавлено: Чт май 12, 2011 17:26
Вахмурка
2VadiMGP, MVV
Спасибо за информацию. Сейчас у меня много работы, но как-нибудь надо поиграться. Не пользы ради, а саморазвития для.
Добавлено: Чт май 12, 2011 17:37
MVV
Здесь есть более-менее пример на Си. Очень неоптимизированный и без UTF-8, но пример.
И да, еще один \0 там в конце действительно нужен.
Ну как, нуля там хватило бы и одного, главное - учесть его при подсчете числа символов строки. В случае, когда длину вычисляют без нас, нужно указывать в конце строки
\0.
Добавлено: Чт май 12, 2011 17:52
VadiMGP
MVV писал(а):Здесь есть более-менее пример на Си. Очень неоптимизированный и без UTF-8, но пример.
Ну, UTF8 это всего одна строчка. У меня вот так
Код: Выделить всё
BYTE utf8name[1024];
int tlen;
tlen=wcstombs((char*)utf8name,CmdName,sizeof(utf8name));
if (tlen!=-1)
{
cds.dwData = 'E' + 256 * 'M';
cds.cbData = tlen+1;
cds.lpData = (PVOID)utf8name;
SendMessage(ghTC, WM_COPYDATA, 1, (LPARAM)&cds);
}
Добавлено: Чт май 12, 2011 18:04
MVV
Боюсь, BOM придется указывать в случае с UTF-8. Гислер уделяет большое внимание совместимости, поэтому вряд ли без BOM станет читать UTF-8.
А вместо
wcstombs я всегда использую
WideCharToMultiByte(CP_UTF8, ...), не люблю эти CRT-шные функции, они много лишнего за собой тянут.
