Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
1

Ждать нажатия клавиатурной комбинации

17.12.2012, 21:31. Показов 3800. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно сделать паузу в программе, пока пользователь не нажмёт одну из заранее (т.е. ещё до компиляции) заданных комбинаций клавиш. Например, Ctrl-Alt-S, Ctrl-Alt-A или Ctrl-Alt-D. Как это сделать? Нужен самый простой способ.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2012, 21:31
Ответы с готовыми решениями:

По событию нажатия на кнопку вызвать функцию, в которой ждать нового нажатия на ту же самую кнопку
type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); ...

Ждать нажатия кнопки
Не знаю даже как правильно описать чего хочу... Есть Form2 На форме 3 Кнопки Хочу в процессе...

1-я форма должна ждать нажатия кнопки во 2-й
Есть две формы: unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Как заставить foreach ждать нажатия кнопки для продолжения?
У меня этим циклом идет перебор объектов ArrayList, на каждой итерации вызывается метод с...

4
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.12.2012, 22:15 2
Цитата Сообщение от Vtulhu Посмотреть сообщение
самый простой способ
Самый простой с двумя клвишами ( например SHIFT+D)
PureBasic
1
2
3
4
5
6
7
8
Repeat
  If  GetAsyncKeyState_(#VK_SHIFT)= 32768 And GetAsyncKeyState_(#VK_B)=-32767 ; GetAsyncKeyState_(#VK_CONTROL)=-32768  это если вместо SHIFT использовать CONTROL
      Break
  EndIf
  
  Delay(1)
ForEver
MessageRequester("","Продолжили")
А если принципиально 3 клавиши, то можно использовать AddKeyboardShortcut, если есть меню и окно в программе, или API RegisterHotKey_, с обработкой событий.
1
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
18.12.2012, 09:55  [ТС] 3
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Самый простой с двумя клвишами ( например SHIFT+D)
В крайнем случае и одна устроит. Вот только я почитал про функцию GetAsyncKeyState и так понял, что это будет работать, только если окно программы является активным. А можно перехватывать саму клавиатуру? Или это уже драйвер придётся писать?
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
18.12.2012, 10:47 4
Цитата Сообщение от Vtulhu Посмотреть сообщение
Вот только я почитал про функцию GetAsyncKeyState и так понял, что это будет работать, только если окно программы является активным.
Это не так.
В примере из второго сообщения, вообще нет окна, но тем не менее, код работает.
1
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
18.12.2012, 11:09  [ТС] 5
Цитата Сообщение от locm Посмотреть сообщение
Это не так.
В примере из второго сообщения, вообще нет окна, но тем не менее, код работает.
Да, что-то я ступил. Если перехват работает глобально, то всё резко упрощается. Низкий поклон всем ответившим!
0
18.12.2012, 11:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2012, 11:09
Помогаю со студенческими работами здесь

Эмуляция нажатия комбинации клавиш
доброго времени суток) народ, кто знает, подскажите пожалуйста, такая ситуация: ...

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

Отлов нажатия комбинации клавиш
Здравствуйте, уважаемые форумчане! Хотелось бы спросить, как сделать так чтобы когда нажимаешь...

Улавливание нажатия комбинации клавиш
Как сделать чтобы программа даже в свёрнутом режиме улавливала нажатие комбинации: Ctrl+D и делала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru