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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2011, 19:59   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вообще-то одного хука клавиатуры с головой хватит.
Там и определишь UP или DOWN.

AlienNation, открыть справку delphi или Windows API не судьба?
Функция принимает одну из констант виртуальных клавишь(те что VT_*), и возвращает либо 0(DOWN) либо 1(UP) ну или как-то наоборот.

А смысла таймера я реально не вижу. Ну разве что, только если хук не использовать, а пользоваться примитивным кодом Timer+GetKeyState. Но это ещё от нужд зависит...

А ещё ваша задача решается "ГЛОБАЛЬНЫМИ" горячими клавишами.

Флаг вам в руки.

Последний раз редактировалось Человек_Борща; 24.08.2011 в 20:04.
Человек_Борща вне форума Ответить с цитированием
Старый 24.08.2011, 20:01   #12
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Вообще-то одного хука клавиатуры с головой хватит.
Там и определишь UP или DOWN.

AlienNation, открыть справку delphi или Windows API не судьба?
Гений во мне давно умер, дайте код пожевать.
AlienNation вне форума Ответить с цитированием
Старый 24.08.2011, 20:01   #13
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Человек_Борща для хука dll писать, не проще GetKeyState заюзать, темболее ТС нужно только отследить сам момент нажанитя.

TC: еще раз
используй GetKeyState в сочетании с таймером
fate вне форума Ответить с цитированием
Старый 24.08.2011, 20:04   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Человек_Борща для хука dll писать, не проще GetKeyState заюзать, темболее ТС нужно только отследить сам момент нажанитя.
и пропустить нажатие можно на раз и два, так что может и не подойти.

кстати, ТС вам точно не хоткей нужен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.08.2011, 20:05   #15
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

да нужды эквивалентны showmessage('controled') при нажатии, т.е. каких-то особых заморочек нету, но таймера я боюсь, что-то он мне не нравится.

Последний раз редактировалось AlienNation; 24.08.2011 в 20:08.
AlienNation вне форума Ответить с цитированием
Старый 24.08.2011, 20:09   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

fate, именно DLL какраз-таки и нужна. GetKeyState имееет свойство пропускать сообщения.

AlienNation, воспользуйтесь головой, руками и стандартными справками delphi(Есть разница между тем, что я открою справку и скопирую содержимое сюда, или что вы откроете справку и найдете много нового для себя?).

Поддерживаю Пепла Феникса. ТС'у нужен глобальный хоткей(Главное чтоб он не занят был).
Человек_Борща вне форума Ответить с цитированием
Старый 24.08.2011, 20:10   #17
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
AlienNation
Приличные кейлоггеры ставят хук WH_LL_KEYBOARD

Цитата:
для хука dll писать
Для WH_LL_KEYBOARD-хука dll нахрен не нужна.
mss вне форума Ответить с цитированием
Старый 24.08.2011, 20:10   #18
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

интервал таймера поставь 200
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if (GetKeyState(VK_CONTROL)=-127)or(GetKeyState(VK_CONTROL)=-128) then
 showmessage('controled');
end;
fate вне форума Ответить с цитированием
Старый 24.08.2011, 20:11   #19
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
именно DLL какраз-таки и нужна.
а разве не глобальный хук нужен для отлова нажатие клавиш не в своем приложении?
fate вне форума Ответить с цитированием
Старый 24.08.2011, 20:16   #20
AlienNation
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от fate Посмотреть сообщение
интервал таймера поставь 200
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if (GetKeyState(VK_CONTROL)=-127)or(GetKeyState(VK_CONTROL)=-128) then
 showmessage('controled');
end;
срабатывает после 2-го или 3-его нажатия, killed.
AlienNation вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение картинки по форме при нажатии клавиши (любой) mihaillo Общие вопросы Delphi 3 04.03.2018 19:18
перехват нажатия клавиши CodeNOT C++ Builder 2 23.05.2011 22:32
Перехват нажатия клавиши cw_o Win Api 10 08.02.2011 23:56
Перехват нажатия ЛКМ [Delphi/Hooks] anGeee Win Api 1 07.12.2009 00:58
Эмуляция нажатия клавиши при отметке Checkbox delphi_beginner Win Api 3 02.06.2007 10:07