ProcessConsoleInput

Место, где разработчики плагинов могут поделиться своим опытом.
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: ProcessConsoleInputW

Post by Yegor »

Latest post of the previous page:

Skirda wrote:
Yegor wrote:MCMD_GETAREA - это затычка (если использовать для получения активного окна), т.к. ни у кого не дошли руки сделать WINDOWINFO
MCMD_GETAREA не затычка, это совершенно из другой области.
Ты путаешь макросы и плагины.
Валентин, ты неправильно меня понял, я имею в виду что использовать MCMD_GETAREA, там где нужно теоретически использовать WINDOWINFO - не логично. Например, в Screen Gadgets, я использую MCMD_GETAREA, потому что информации из WINDOWINFO недостаточно.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInputW

Post by Maximus5 »

Хочется странного ) Звать функцию ProcessConsoleInputW не только перед обработкой "кнопки" фаром, но и после того, как фар выполнил свои действия. Например, в PROCESSCONSOLEINPUT_FLAGS добавить флаг PCIF_POSTPROCESS.

Зачем это надо: синхронизация каталогов, двигаем курсор по одной панели, плагин отслеживает текущий элемент на активной панели и пытается выделить одноименный на пассивной панели.
Можно, конечно, постоянно звать Synchro для проверки, но зачем? Было бы красивее выполнять обработку сразу после того, как фар обработал кнопку Down (например).
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: ProcessConsoleInputW

Post by zg »

Maximus5 wrote:Было бы красивее
красотой тут и не пахнет.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: ProcessConsoleInputW

Post by Max Rusov »

IMHO - дурная мысль. Понятие "выполнил свои действия" - вообще непонятно что значит. Если по кнопке модальный диалог открывается - то в какой момент этот POSTPROCESS вызывать?
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: ProcessConsoleInput

Post by Alexey Samlyukov »

в текущей реализации юзается структура:
struct ProcessConsoleInputInfo
{
size_t StructSize;
PROCESSCONSOLEINPUT_FLAGS Flags;
INPUT_RECORD Rec;
HANDLE hPanel;
};

мне интересно, зачем тут hPanel? посмотрел код, поле не юзается. предлагаю выкинуть пока не поздно. возражения?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: ProcessConsoleInput

Post by zg »

Alexey Samlyukov wrote:предлагаю выкинуть пока не поздно.
а чего поздно-то. это неофициальное апи. его нет в официальных сборках.
ps: чё-то я проспал.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: ProcessConsoleInput

Post by Maximus5 »

выкинуть наверное. тем более, что вызывается не только в панелях.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: ProcessConsoleInput

Post by Skirda »

StructSize в структуре есть, так что потом никто не помещает добавить что-нить полезное.
We are the Borg. You will be assimilated.
So Say We All!
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

ProcessConsoleInputW

Post by Shmuel »

Никогда раньше не пользовался ProcessConsoleInputW, сегодня попробовал, и обнаружилось следующее явление: если плагин при получении определённого сочетания клавиш возвращает 1, то операция Фара, соответствующая данному сочетанию, не выполняется (это соответствует документации). Но если на данное сочетание назначен макрос, то он выполняется (о чём документация умалчивает). Это баг или фича?
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

ProcessConsoleInputW

Post by Max Rusov »

Насколько я помню, если на кнопку повешен макрос, то ProcessConsoleInputW вообще не вызывается. По этому, в частности, native-макросы FAR имеют приоритет над макросами MacroLib.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

ProcessConsoleInputW

Post by Shmuel »

Об этом я как-то не подумал, и в доках не упомянуто.
Однако сейчас проверил: при наличии макроса, ProcessConsoleInputW не вызывается при нажатии, но вызывается при отпускании.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: ProcessConsoleInputW

Post by John Doe »

Max Rusov wrote:По этому, в частности, native-макросы FAR имеют приоритет над макросами MacroLib.
Это проблема...
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

ProcessConsoleInputW

Post by Max Rusov »

Почему?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Post by John Doe »

Например это делает невозможным нормальную реализацию того, что мы сегодня обсуждали в теме макролиб.
Имхо эту особенность следует расценить как баг.

Update: http://bugs.farmanager.com/view.php?id=2952
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

ProcessConsoleInputW

Post by Max Rusov »

John Doe wrote:Например это делает невозможным нормальную реализацию того, что мы сегодня обсуждали в теме макролиб.
Не вижу проблемы. С точки зрения Far привязка "Key:Hold" является "неправильной" и ProcessConsoleInputW будет вызываться. Проблемы будут только если смешивать два способа вызова на одной кнопке. Но этого просто не надо делать...
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Post by John Doe »

Что значит не надо? В этом весь смысл вообще-то.
Зачем мне все эти холды, если я на основную клавишу не смогу прицепить макрос?

А возражения против исправления текущего поведения есть?
Post Reply

Return to “Разработка плагинов”