Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16

Отключение клавиши

25.04.2013, 17:32. Показов 6208. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать программу,которая при нажатии alt+ctrl+R будет издовать сигнал.(1)
А так же блокировать кнопку U при повторном нажатии alt+ctrl+R разблокировать(2)

(1) я сделал
а вот как блокировать клавишу я не знаю... подскажите. или примеры дайте...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#define VK_R 0x52
 
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  bool RHKret = RegisterHotKey(Form1->Handle, 0x00F,MOD_ALT + MOD_CONTROL,VK_R );
  if (!RHKret)
  {
   ShowMessage(SysErrorMessage(GetLastError()));
}
}
 
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
if (Msg.message == WM_HOTKEY)
   {
          Beep(500,500);
          ShowMessage("Клавиша ");
          if(getche()==VK_R)   
        }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2013, 17:32
Ответы с готовыми решениями:

Работа с реестром (Отключение клавиши "WIN")
Клавиша &quot;WIN&quot; отключается путем правки ключа в реестре. Чтобы ее отключить нужно: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro...

Горячие клавиши - обойти наведение фокуса и привязать клавиши клавиатуры к кнопкам на форме
всем доброго времени суток. столкнулся с такой проблемой. требуется чтобы при нажатии определенных кнопок на клавиатуре соответственно...

отключение клавиши
Всем привет! Как можно отключить определенную клавишу в функции GetAsyncKeyState? приведите пожалуйста примеры?

14
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
25.04.2013, 17:39
Возможно находить глобальное сообщения (Msg) и при его обнаружение, просто удалять из стэка ...

Добавлено через 4 минуты
Блокировка клавиши с использованием прерывания Такой же, тема по прежнему открыта, усиленно гуглю...
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.04.2013, 18:04
Код <censored />, смортите пример из Архангельского...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.04.2013, 19:36
C++
1
if(Key==VK_R) return;
0
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
25.04.2013, 23:04  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
C++
1
if(Key==VK_R) return;
можете объяснить?
что то он не блокирует...

Добавлено через 51 секунду
Цитата Сообщение от Avazart Посмотреть сообщение
Код <censored />, смортите пример из Архангельского...
можно ссылку?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.04.2013, 23:11
В той же функции вставить
C++
1
ButtonU->Enabled = !ButtonU->Enabled;
0
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
26.04.2013, 00:20  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
В той же функции вставить
C++
1
ButtonU->Enabled = !ButtonU->Enabled;
подразумевалось клавиша на клавиатуре "U"
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.04.2013, 00:37
Кусок кода из моей проги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//  Регистрация хука на Alt+2
RegisterHotKey(Handle,0x00F,MOD_ALT,'2');
//---------------------------------------------------------------------------
void __fastcall TFMyDeskTop::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_HOTKEY) 
   {
    if (Msg.wParam == 0x00F)   AcShow->Execute(); // сообщение Alt+2 
   }
}
//---------------------------------------------------------------------------
// Снятие  регистрации  Alt+2
 UnregisterHotKey(Handle,0x00F);
1
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
26.04.2013, 16:44  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Кусок кода из моей проги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//  Регистрация хука на Alt+2
RegisterHotKey(Handle,0x00F,MOD_ALT,'2');
//---------------------------------------------------------------------------
void __fastcall TFMyDeskTop::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_HOTKEY) 
   {
    if (Msg.wParam == 0x00F)   AcShow->Execute(); // сообщение Alt+2 
   }
}
//---------------------------------------------------------------------------
// Снятие  регистрации  Alt+2
 UnregisterHotKey(Handle,0x00F);
Так где будет блокировка клавиши???
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.04.2013, 16:51
Сдесь хук ...
Цитата Сообщение от Tw1X Посмотреть сообщение
Так где будет блокировка клавиши???
Блокировка кнопки или клавиши ?

И где ? глобально либо только в определенном окне вашей программы ?
0
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
26.04.2013, 18:02  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Сдесь хук ...

Блокировка кнопки или клавиши ?

И где ? глобально либо только в определенном окне вашей программы ?
Я там немного не правильно написал. Блокировки клавиши клавиатуры. Желательно глобально.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.04.2013, 18:25
Ну значит еще один хук делаете.
0
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
26.04.2013, 19:58  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Ну значит еще один хук делаете.
так вот я и не понял как его сделать чтоб отключить клавишу. Можете показать пример?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.04.2013, 20:29
2+2 даже сложить не можем ?

Приблизительно так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//---------------------------------------------------------------------------
bool blockU= false;
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
 if (Msg.message == WM_HOTKEY)
   {
     if (Msg.wParam == 0x00F)
      {
        blockU = !blockU;
        if (blockU) RegisterHotKey(Handle,0x0FF,0,'U');
        else        UnregisterHotKey(Handle,0x0FF);
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 RegisterHotKey(Handle,0x00F,MOD_ALT + MOD_CONTROL,'R');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 UnregisterHotKey(Handle,0x00F);
 if(blockU) UnregisterHotKey(Handle,0x0FF);
}
//---------------------------------------------------------------------------
1
1 / 1 / 1
Регистрация: 24.05.2011
Сообщений: 16
26.04.2013, 23:55  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
2+2 даже сложить не можем ?

Приблизительно так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//---------------------------------------------------------------------------
bool blockU= false;
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
 if (Msg.message == WM_HOTKEY)
   {
     if (Msg.wParam == 0x00F)
      {
        blockU = !blockU;
        if (blockU) RegisterHotKey(Handle,0x0FF,0,'U');
        else        UnregisterHotKey(Handle,0x0FF);
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 RegisterHotKey(Handle,0x00F,MOD_ALT + MOD_CONTROL,'R');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 UnregisterHotKey(Handle,0x00F);
 if(blockU) UnregisterHotKey(Handle,0x0FF);
}
//---------------------------------------------------------------------------
Очень благодарен за помощь
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2013, 23:55
Помогаю со студенческими работами здесь

Отключение клавиши Alt
Помогите пожалуйста, переключаю язык с помощью shift+alt, вылазит верхняя панель и выделяется &quot;Файл&quot;, меня это бесит, и при...

Отключение повторного нажатия клавиши.
Hello, Скачал электронную версию пианино под свой вкус, но напасть: При удержании кнопки клавиатуры программа воспринимает как...

При нажатии клавиши I проверить и вывести на экран состояние клавиши Insert
Добрый день, помогите с заданием при нажатии клавиши I проверить и вывести на экран состояние клавиши Insert очень далек от...

При нажатии клавиши в английской раскладке, выводить русское значение клавиши
Требуется чтобы при нажатии клавиши в английской раскладке, выводилось Русское значение клавиши. Например q это й. По возможности с учетом...

Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши
Народ. не могу найти, как в студии присваивать горячие клавиши к примеру на выполнение нажатие клавиши? или на пункты меню.. Добавлено...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru