![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Как перехватить нажатие клавиши Scroll Lock на клавиатуре.
при этом программа у меня НЕАКТИВНА, свернута или находится в трее. |
|||
|
||||
| eof |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 30.5.2003 Репутация: нет Всего: нет |
ну... Hook на клавиатуру надо поставить, наверное.
если не слышал про hook почитай в msdn про SetWindowsHookEx. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Есть в факе пример хука на клаву.
Но если с ним не хочешь возиться, то возьми GetAsyncKeyState, запихай его в таймер и смотри изменение результата. Если я не ошибаюсь, то это выглядит так: if GetAsyncKeyState(VK_SCROLL) and $8000 then Showmessage('Pressed'); Константу точно не помню, но поищи там где-нть есть. -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я и сам знаю что надо использовать SetWindowsHookEx, но как и с какими параметрами?
|
|||
|
||||
| eof |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 30.5.2003 Репутация: нет Всего: нет |
очень кратко, только принцип:
1. создаешь длл в которой делаешь процедуру типа KeyboardProc (см. MSDN если нет то дельфевый хелп "Pen API Programmer's Reference"). 2. пишешь проект в котором выполниешь: SetWindowsHookEx(WH_KEYBOARD (константа) ,указатель на процедуру (из длл) ,Handle длл ,0). |
|||
|
||||
| lider07 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 11.6.2003 Где: Бишкек Репутация: нет Всего: нет |
А по моему вот так :IF (Key_ScrollLock) and (ssAlt in Shift) then key:=0;
|
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
В вопросе я ясно обозначил, что программа НЕАКТИВНА! |
|||
|
||||
| lider07 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 11.6.2003 Где: Бишкек Репутация: нет Всего: нет |
А ты пробывал!??? :-( |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Вообще-то нет. А в обработчик какого события засунуть эту строку?
|
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
IF (Key=ScrollLock) and (ssAlt in Shift) then key:=0;
Это вроде бы как отключает ALt+ScrollLock(в OnKeyDown/OnKeyPressed/OnKeyUp). Но очень сомнительно, что это заработает -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| lider07 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 11.6.2003 Где: Бишкек Репутация: нет Всего: нет |
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); прям сюда! Это сообщение отредактировал(а) lider07 - 3.7.2003, 09:22 |
|||
|
||||
| eof |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 30.5.2003 Репутация: нет Всего: нет |
Я не могу поверить! Неужели правда? Форма же не должна получать сообщений от клавиатуры, она же неактивная. Или scroll lock такая волшебная кнопка?
|
|||
|
||||
| lider07 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 11.6.2003 Где: Бишкек Репутация: нет Всего: нет |
Ловишь нажатие и проверяешь
Key = VK_SCROLL ну попробуй так! |
|||
|
||||
| lider07 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 11.6.2003 Где: Бишкек Репутация: нет Всего: нет |
Или можно тогда Хуком - для етого форма и ненужна
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |