Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2013, 12:02   #11
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Цитата:
Хук на клаву я ставить умею, но хотелось бы обойтись без этого. Хук - это уж слишком.
Совсем напрасно Вы так думаете. В таком случае получается, что Вы сами извращаетесь с кодом.
Stertor вне форума Ответить с цитированием
Старый 20.07.2013, 12:35   #12
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Не знаю - вы изменили код.
В первоначальном варианте были безусловно два Translate и Dispatch()
В первом варианте я, действительно, немного не дочитал MSDN. Теперь же, я сделал точно так, как там написано.
Цитата:
Сообщение от waleri Посмотреть сообщение
Почитайте про FVIRTKEY,
спасибо. Я сделал так:
Код:
  arraccel[0].fVirt := FVIRTKEY or FALT;
  arraccel[0].key := VK_M;
  arraccel[0].cmd := id_1;
  arraccel[1].fVirt := FVIRTKEY or FCONTROL;
  arraccel[1].key := VK_L;
  arraccel[1].cmd := id_2;
  myaccel := createacceleratortable(arraccel,2);
{  if myaccel>0 then
  MessageBox(form1,'','',MB_OK);}
    end;


    WM_COMMAND:
    if (loword(Wpar)=id_1) then
    MessageBox(wnd,PChar('alt+M'),PChar(':)'),0) else
    if (loword(Wpar)=id_2) then
    MessageBox(wnd,PChar('ctrl+L'),PChar(':)'),0);
Так работает. Клавиши различаются.
Но как заставить ListView принимать комбинации?
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в момент редактирования ставим HotKey контрол и все.
проясните кто-нибудь этот момент.
Цитата:
Сообщение от Stertor Посмотреть сообщение
Совсем напрасно Вы так думаете. В таком случае получается, что Вы сами извращаетесь с кодом.
А в чем тут заключается извращение?
Хук ловит нажатие клавиш из всех окон всех чужих процессов и впихивает во все процессы свою DLL (т.е. хук - штука глобальная).
А акселераторы ловят нажатие только на своём окне и обходятся без DLL.
И в каком способе извращения больше?
p.s. Я только не понял, как быть, если нужно назначить разные акселераторы на разные окна одного (своего) процесса, если окон несколько? Или, например, на child-окна вроде EDIT'ов. Но мне это пока не нужно.
p.p.s. Хотя, с child'ами ясно. Надо проверять, на каком child'е находится фокус.

Последний раз редактировалось BLACK_RAIN; 20.07.2013 в 12:41.
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.07.2013, 12:50   #13
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Цитата:
ну... да... да.. да. припоминаю, там одним из аргументов можно указать ID процесса, за которым хук будет следить хук. Я этим никогда не пользовался.
Тройка Вам! )

Последний раз редактировалось Stertor; 20.07.2013 в 13:41.
Stertor вне форума Ответить с цитированием
Старый 20.07.2013, 13:34   #14
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stertor Посмотреть сообщение
Двойка Вам.
ну... да... да.. да. припоминаю, там одним из аргументов можно указать ID процесса, за которым хук будет следить хук. Я этим никогда не пользовался. Если указать 0, тогда хук следит за всеми процессами.
Но я не совсем понимаю, как в обработчике сообщения от хука отследить нужную комбинацию. Чем это сообщение отличается от WM_KEYDOWN? Конечно, я знаю, что это далеко не одно и тоже. Но всё-же, как хук поможет в отлове комбинаций?
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.07.2013, 13:42   #15
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Ставить флаг, при нажатии одной из клавишей.
Stertor вне форума Ответить с цитированием
Старый 20.07.2013, 14:01   #16
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stertor Посмотреть сообщение
Ставить флаг, при нажатии одной из клавишей.
эм... А разве нельзя это делать без хука в WM_KEYDOWN? А в WM_KEYUP его снимать?
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.07.2013, 15:34   #17
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Четверка. Давайте Вашу зачетку.
Stertor вне форума Ответить с цитированием
Старый 20.07.2013, 16:02   #18
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stertor Посмотреть сообщение
Четверка. Давайте Вашу зачетку.
а как запомнить комбинацию в ListView? Придется делать отдельные колонки для клавиши и модификатора?
При нажатии клавиши, проверять ListView на наличие модификатора?
Это значит, придется еще запоминать, какая клавиша на какой строчке находится? Или каждый раз перебирать ListView в поисках строчки с кодом нажатой клавиши?
BLACK_RAIN вне форума Ответить с цитированием
Старый 20.07.2013, 16:09   #19
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Эх, зря Вы это написали. (
Stertor вне форума Ответить с цитированием
Старый 20.07.2013, 17:03   #20
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stertor Посмотреть сообщение
Эх, зря Вы это написали. (
Я для того и спрашиваю, потому что не знаю. Если бы все всё знали и умели, то форумов не было бы.
Это предположение было первым, что пришло на ум.

Последний раз редактировалось BLACK_RAIN; 20.07.2013 в 18:55.
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка клавиш из dll AntyDES C# (си шарп) 5 23.10.2012 12:42
Возможно ли в Турбо Паскале изменить назначение клавиш? bonjovi Паскаль, Turbo Pascal, PascalABC.NET 4 12.02.2012 20:43
Обработка клавиш на TListBox Melanholly Общие вопросы Delphi 2 31.10.2011 14:06
Блокирование системных клавиш и их комбинаций DannerDOS Win Api 15 05.05.2010 14:12
Изменение и назначение сочетания клавиш uha58 Общие вопросы Delphi 1 29.12.2009 12:54