Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1

Горячие клавиши неактивного окна

25.07.2011, 22:18. Показов 3315. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!, написал программку для одной игры и добавил некоторые горячие клавиши, но дело в том что при переходе в игру горячие клавиши проги не работают, может кто знает как это сделать, заранее спасибо!
P.S. Я слышал о какой то фун-ции HotKey может это чем то поможет...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2011, 22:18
Ответы с готовыми решениями:

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

Скриншот неактивного окна
Доброго времени суток подскажите плз возможно ли снять скриншот неактивного окна программы если да то как? я скриншот программы снимаю...

Горячие клавиши
Ввожу горячие клавиши bool r1 =RegisterHotKey(Handle,1,0,qqq->HotKey);//qqq THotKey (в примере будет использована буква 'Y') if(r1)...

18
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.07.2011, 22:30
кто ж знает, как вы их добавляли... общий случай описан здесь:
RegisterHotKey. Как сделать несколько RegisterHotKey и отменить регистрацию
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
26.07.2011, 20:46  [ТС]
А можно пример... а то я чото не понял
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 00:01
GoldDragon,

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
void __fastcall TForm24::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle,0,MOD_ALT+MOD_CONTROL,VK_RETURN);
RegisterHotKey(Handle,1,MOD_ALT,'A');
RegisterHotKey(Handle,2,MOD_ALT,'B');
}
//---------------------------------------------------------------------------
void __fastcall TForm24::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if(Msg.message == WM_HOTKEY)
 {
     if(Msg.wParam == 0)
      {
          ShowMessage("Enter");
      }
      if(Msg.wParam == 1)
       {
           ShowMessage("A");
       }
      if(Msg.wParam == 2)
       {
           ShowMessage("B");
       }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm24::FormClose(TObject *Sender, TCloseAction &Action)
{
UnregisterHotKey(Handle,0);
UnregisterHotKey(Handle,1);
UnregisterHotKey(Handle,2);
}
Добавлено через 15 минут
GoldDragon,
Если Handle хочеш получить с не твоего окна то понадобится получить HWND с окна. Окна найдёте с помощю FindWindow(); и FindWindowEx();
2
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 11:02  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(Msg.message == WM_HOTKEY)
 {
     if(Msg.wParam == 0)
      {
          ShowMessage("Enter");
      }
      if(Msg.wParam == 1)
       {
           ShowMessage("A");
       }
      if(Msg.wParam == 2)
       {
           ShowMessage("B");
       }
 }
Уменя прям в начале код вот такая ошибка появляется
[BCC32 Error] Unit2.cpp(29): E2294 Structure required on left side of . or .*
Unit2.cpp(28): parsing: void _fastcall TForm2::ApplicationEvents1ActionExecute( TBasicAction *,bool &)
и что значит это точка, менял на стрелку думал что код на делфи написан но разницы никакой
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 11:41
Все 4 точки менял на стрелку?
Компилятор говорит, что слевой стороны от точки должна быть переменная а не указатель на нее!

Выход:
Поставить стрелку или же разыменовывай указатель
C++
1
if((*Msg).message == WM_HOTKEY)
Во всех 4х местах разумеется
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 12:04  [ТС]
нее не получлилось теперь такая ошибка
[BCC32 Error] Unit2.cpp(29): E2316 'message' is not a member of 'TIdMessage'
Full parser context
Unit2.cpp(28): parsing: void _fastcall TForm2::ApplicationEvents1ActionExecute( TBasicAction *,bool &)

Тут дело не в этом. как я понял Msg это компонент, но у этого компонента нет Message... или может мне библиотеку надо подключить
обясните мне что значит
C++
1
if(Msg.message == WM_HOTKEY)
Msg message и WM=HOTKEY
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 13:07
GoldDragon, все работает.
Вложения
Тип файла: zip forgolddragon.zip (355.3 Кб, 22 просмотров)
1
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 13:32  [ТС]
Всё сделал как в примере у тебя прога запустилась но при нажатии нечего не происходит
вот код cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle,1,MOD_ALT,'A');
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
 UnregisterHotKey(Handle,1);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::WMHotKey(TWMHotKey &Message)
{
  switch (Message.HotKey)
  {
    case 0: ShowMessage("ENTER"); break;
    case 1: ShowMessage("A"); break;
  }
}
вот h
C++
1
2
3
4
5
6
7
8
9
10
11
class TForm2 : public TForm
{
__published:    // IDE-managed Components
    TIdMessage *Msg;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall WMHotKey(TWMHotKey &Message); //вот создал параметр
private:    // User declarations
public:     // User declarations
    __fastcall TForm2(TComponent* Owner);
};
в чём опять проблема...
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 13:34
вот тут прекрасный код!

RegisterHotKey. Как сделать несколько RegisterHotKey и отменить регистрацию

Извиняюсь за повтор..
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 13:36
GoldDragon, все происходит! просто нужно нажимать Alt + A, Alt + Enter.

Добавлено через 38 секунд
Fuckall666, эту ссылку давал LK во втором посте.
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 13:38
У меня эквивалентная ситуация!

доходит до сюда и не выполняет условие, что ни нажимай!

C++
1
if (Msg.message == WM_HOTKEY)
Кто знает, почему?
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 13:40  [ТС]
А зачем это прописывать в h файле
C++
1
2
3
BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(WM_HOTKEY,TWMHotKey,WMHotKey);
END_MESSAGE_MAP(TForm);
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 13:42
GoldDragon, это карта откликов. Как-то так. Поищи в гугле.
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 13:44  [ТС]
Цитата Сообщение от QVO Посмотреть сообщение
GoldDragon, все происходит! просто нужно нажимать Alt + A, Alt + Enter.

Добавлено через 38 секунд
Fuckall666, эту ссылку давал LK во втором посте.
В твоеё программе всё работает я не отрицаю, просто когда я пишу сам по твоему примеру у меня прога запускается но не происходит ничего при нажатии алт + А, я посмотрел там в файле h что то прописано из за этого он и работает но что я понять не могу....

Добавлено через 1 минуту
Тогда дай ссылку на справку что такое карта откликов, ты же когда то тоже не понимал...
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 13:45
GoldDragon, так внимательно прочитай тему, которую LK дал https://www.cyberforum.ru/post868937.html
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.07.2011, 13:47  [ТС]
т.е. ты сам толком не понял что это, но ясно ток то что без этого он не будет работать), ну тогда всё всем спасибо за помощь!
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 13:52
GoldDragon, читай вообщем.
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 14:25
GoldDragon,
А билдер какой у вас? у меня всё отлично работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.07.2011, 14:25
Помогаю со студенческими работами здесь

Горячие клавиши
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?

Горячие клавиши
Суть задания в том что при нажатии этой комбинации :левый alt + левый ctrl + F10, блокировалась\разблокировалась кнопка "0". И...

Горячие клавиши
Ув.программисты как сделать чтобы при неактивном приложении оно воспринимало нажатие клавиш ctrl+alt+стрелка вверх и ctrl+alt+стрелка вниз?

Как для неактивного окна применить клавиатуру активного
Надо понять, как для неактивного окна применить клавиатуру активного. Сам момент есть только как это сделать.

Горячие клавиши среды C++ Bulder 6
Здравствуйте. Что-то нажал и вдруг лавинообразно поменялись в среде горячие клавиши. Не могу исправить! Помогите.


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru