| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Нажатие клавишь вне программы |
| Автор: ReFleX 15.11.2004, 12:58 |
| Я хочу сделать, чтобы при нажатии определённой клавиши программа скрывалась, а также, при нажатии другой клавиши программа открывалась, естественно клавиша будет нажиматся вне программы. Надо сделать небольшую шпору Спасибо! |
| Автор: Mal Hack 15.11.2004, 13:03 | ||
Тут сорри, правильного ответа дать не смогу.. Один из вариантов - следующий: OnIdle у формы. Событие выполняется в момент простоя (не работы) приложения. Т.е. для отлавливания CapsLock или NumLock можно спокойно использовать. |
| Автор: azesmcar 15.11.2004, 17:18 | ||
| Через АПИ Функции Принцип простой, нужна глобальная функция Пишешь DLL-ку Там функцию для переxвата нажатой клавиши. Из своей проги вызываешь SetWindowsHookEx idHook => WH_KEYBOARD lpfn => Адрес твоей функции в DLL dwThreadId => если дашь 0 то клавиши будут отлавливаться для всеx потоков, если дашь конкретный поток то для него. А дальше через MSDN, если не получиться пиши, пришлю работающий пример... CALLBACK функция в DLL должна иметь следующий прототип
|
| Автор: JackYF 16.11.2004, 04:35 | ||
| Люди, вы чего, зачем так сложно? В программе пишешь примерно такой код:
<Код кнопки> от 0 до 255. |
| Автор: ReFleX 16.11.2004, 09:50 |
| JackYF А если кнопка будет нажата вне программы будет работать? |
| Автор: ReFleX 16.11.2004, 10:24 | ||
Выдаёт ошибку в первой строчке: [C++ Error] Unit1.cpp(20): E2451 Undefined symbol 'H78' Я не тот код кнопки написал? |
| Автор: ReFleX 22.11.2004, 01:42 | ||
http://cppbuilder.hotbox.ru/kod.html Для следующих |
| Автор: JackYF 24.11.2004, 02:01 |
| Оно должно работать вне программы! У меня работало Код кнопки не тот, или что? |
| Автор: ReFleX 24.11.2004, 02:03 |
| Всё спасибо, я разобрался Всё пашет! |
| Автор: ano360 1.2.2007, 21:01 |
| ReFleX-А где ты этот код вписал? В каком событии? разобрался сам-помоги товарисчу |
| Автор: Romikgy 1.2.2007, 21:48 | ||
или отдельный поток юзать |
| Автор: ano360 1.2.2007, 21:56 |
| borland с++ builder 6 - нет у формы события. Добавлено @ 21:57 мож OnHide? |
| Автор: Romikgy 1.2.2007, 22:02 | ||
небольшая неточность у Mal Hack, но никто не отменял кнопку F1!!!!!
|
| Автор: ano360 2.2.2007, 21:21 |
| я использовал ApplicationEvents да, всё это здорого, но OnIdle срабатывает у меня только после того, как я навиду курсон на форму т.е. код выполняется только после этого. Наприменр, если я введу void __fastcall TForm1::ApplicationEvents1Idle(TObject *Sender, bool &Done) { bool but = GetAsyncKeyState(VK_CONTROL); if (but){ Button1->Caption="ctrl"; } и нажму ctrl, название поменяется только тогда, когда я наведу курсор на форму Можно сделать, чтоб менялась мгновенно? |
| Автор: Romikgy 2.2.2007, 22:43 | ||
|