Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/32: Рейтинг темы: голосов - 32, средняя оценка - 4.88
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744

RegisterHotKey

27.07.2011, 13:50. Показов 6739. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Сделал все как говорится тут:

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

В пустом проекте работает, а в моем нет..
это условие не выполняется:
C++
1
if (Msg.message == WM_HOTKEY)

Вот заголовочный файл, какой из этих методов может блокировать горячие клавиши?

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//---------------------------------------------------------------------------
 
#ifndef KeyBoardMan_UnitH
#define KeyBoardMan_UnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "sLabel.hpp"
#include "sSkinManager.hpp"
#include <Dialogs.hpp>
#include <mmsystem.hpp>
#include <AppEvnts.hpp>
#include "sButton.hpp"
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include "sPanel.hpp"
#include <IniFiles.hpp>
#include "ProgressUnit.h"
#include <fstream.h>
#include <map.h>
#include "StatictisUnit.h"
#include <jpeg.hpp>
 
//---------------------------------------------------------------------------
class TMainForm : public TForm
{
__published:    // IDE-managed Components
    TsSkinManager *sSkinManager1;
    TOpenDialog *OpenDialog1;
    TLabel *lRight;
    TLabel *lLeft;
    TApplicationEvents *ApplicationEvents1;
    TsPanel *TextPanel;
    TTimer *TimerPause;
    TTimer *TimerAct;
    TLabel *LabelSpeed;
    TsPanel *PnlTime;
    TImage *Image1;
    TLabel *LabelPercent;
    TMainMenu *MainMenu1;
    TMenuItem *N1;
    TMenuItem *N2;
    void __fastcall InitVariables();
    void __fastcall FirstStart();
    void __fastcall SetFile(AnsiString fname);
    void __fastcall GetFirstString();
    void __fastcall Start();
    void __fastcall FormKeyPress(TObject *Sender, wchar_t &Key);
    void __fastcall PauseKeyPress(TObject *Sender, wchar_t &Key);
    void __fastcall Pause();
    void __fastcall TrueChar();
    void __fastcall WrongChar();
    void __fastcall SetOptimalSize();
    void __fastcall SetMinimalSize();
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall SwitchSize();
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall GetINI();
    void __fastcall SetINI();
    void __fastcall Restore();
    AnsiString __fastcall GetTime();
    short __fastcall GetSpeed();
    void __fastcall TimerPauseTimer(TObject *Sender);
    void __fastcall TimerActTimer(TObject *Sender);
    void __fastcall PnlTimePaint(TObject *Sender, TCanvas *Canvas);
    short __fastcall GetSessionTime();
    float __fastcall GetFaultsPercent();
    void __fastcall N1Click(TObject *Sender);
    void __fastcall N2Click(TObject *Sender);
    bool __fastcall GetDesktopWallpaper();
    void __fastcall ApplicationEvents1Deactivate(TObject *Sender);
    void __fastcall ApplicationEvents1Message(tagMSG &Msg, bool &Handled);
private:    // User declarations
    ifstream fin;
    FILE* textFile;
    FILE* ff; // FaultsFile!
    String fileName;
    String iniFileName;
    AnsiString ch;
    char buffer[100]; // Используется при заполнении LRight при запуске
    bool miniSized;
    int num; // Количество фраз
    int currentStr; // Текущая фраза
    fpos_t pos; // Текущая позиция
    TIniFile *iniFile;
    short speed;
    String templStr; // Для режима паузы
    String temprStr;
    int lrTop;
    char second;
    char minute;
    AnsiString secStr, minStr;
    short rightPresses;
    short wrongPresses;
    TColor color;
    AnsiString progressFileName;
    std::map<wchar_t,int>::iterator i;
    bool paused;
public:     // User declarations
    TStringList *strListProgress;
    DynamicArray<String> dateStrArray;
    DynamicArray<short> speedArray;
    DynamicArray<float> faultArray;
    DynamicArray<String> timeStrArray;
    std::map <wchar_t, int> mapFaults;
 
    TTime timePassed;
    TTime sessionTime;
 
    __fastcall TMainForm(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TMainForm *MainForm;
//---------------------------------------------------------------------------
#endif
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2011, 13:50
Ответы с готовыми решениями:

RegisterHotKey. Как сделать несколько RegisterHotKey и отменить регистрацию
Спасибо - Otaka! https://www.cyberforum.ru/cpp-builder/thread39159.html?uri=/cpp-builder/thread39159.html все отлично работает, но...

RegisterHotKey для русской раскладки
пытаюсь пользоваться registerhotkey с англ биндами отлично работает биндит, прожимается и снимает бинд всё как надо а вот с русскими...

RegisterHotKey для количества клавиш больше 3-х
Всем доброго времени суток. Я в программе ставлю хук через компонент ApplicationEvents, но проблема в том, что зарегистрировать хук можно...

42
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 14:18
Fuckall666,
Заголовок для етого не надо, оно сделано в апи, я же тебе показал пример! :/
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
27.07.2011, 14:20
Programmer., тупо копипастят а потом у них не работает..
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 14:32  [ТС]
Я же говорю, RegisterHotKey не работает именно в этом проекте.
В пустом все идеально

Добавлено через 1 минуту
Цитата Сообщение от QVO Посмотреть сообщение
Programmer., тупо копипастят а потом у них не работает..
Это к чему? Мне разрабатывать свой язык, свой API и свой компилятор и все заново изобретать по-вашему?

Добавлено через 10 минут
Programmer, если ты об этом:
C++
1
2
3
4
5
6
7
        
void __fastcall TMainForm::ApplicationEvents1Message(tagMSG &Msg,bool &Handled)
{
      if (Msg.wParam == 0) // 
      {
       ShowMessage("ENTER"); // Наше действие
      }
То программа бесконечно выдает сообщение!

С++ Builder XE
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 19:19
Fuckall666,

Ваша программа по моему получает много сообшений(Msg.) да?

Код выложите пожалуйста
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 19:27  [ТС]
Эээммм..м.м.м... Дело в том что код более 1000 строк...
Любая программа получает сообщения!
Мне нужно чтоб действие которое должно выполняться при нажатии определенной комбинации клавиш выполнялось только при нажатии этой самой комбинации клавиш!

Programmer., тот двухстрочный пример, который вы выложили на 5 минут и убрали, он вызывает действие которое должно выполняться при связке клавиш даже если ничего не нажимать, это очевидно, потому как выполняется оно при получении сообщений..

Разумеется, если пустой проект запустить и что-то с ним сделать, то что угодно заработает!

Проблема все та же:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TMainForm::ApplicationEvents1Message(tagMSG &Msg,bool &Handled)
{
        //Сюда программа попадает бесконечно много раз
    if (Msg.message == WM_HOTKEY)
    {
        ShowMessage("OnMessage ok!");   // До этой строки не доходит!!!
        if (Msg.wParam == 0)
        {
             ShowMessage("ENTER"); // Наше действие
        }
 
    }
}
Условие в 4 строке не выполняется
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
27.07.2011, 20:04
Лучший ответ Сообщение было отмечено как решение

Решение

Вот попробуй исходник, если это не поможет то я незнаю...
Вложения
Тип файла: rar Горячая клавиша.rar (341.3 Кб, 59 просмотров)
3
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 20:30  [ТС]
Samrisbe Спасибо за пример! Но я уже неоднократно повторял, что в новом(пустом) проекте все это работает, а в проекте заголовочный файл которого я привел - не работает!!

Это условие не выполняется!
C++
1
    if (Msg.message == WM_HOTKEY)
Что-то перехватывает, или не делает невозможным вызов WM_HOTKEY
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 23:00
Fuckall666,
Шас попробую помоч...
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
27.07.2011, 23:03
Информация к изучению мне самому в лом капаться
2
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
27.07.2011, 23:12
Fuckall666,
Цитата Сообщение от Fuckall666 Посмотреть сообщение
а в проекте заголовочный файл которого я привел - не работает!!
Ты о .h Файле? Причем тут загаловочный файл ? Не понял я чтото! зачем тебе заголовочный файл?
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.07.2011, 23:18  [ТС]
В .h - заголовочном файле объявлены все функции которые используются в проекте... по входным параметрам можно определить какая из них вероятно способна перехватить горячие клавиши...
в функциях, которые ничего не принимают нет ничего особенного
Сама программа представляет из себя клавиатурный тернажер..

Простая форма, меню.. очень похоже на "Stamina" если пользовались им..
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
28.07.2011, 00:06
Fuckall666,
Вес код выложи пожалуйста.. и в .h файле тоже покажи что творится
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
28.07.2011, 00:09  [ТС]
Цитата Сообщение от Programmer. Посмотреть сообщение
и в .h файле тоже покажи что творится
Поднимитесь в самый верх темы пожалуйста
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
28.07.2011, 09:47
Fuckall666,
Тогда я вас жолжен огорчить, .h файл тут не причем! не нужна у апи (функций RegisterHotKey, UnregisterHotKey) .h файлы! и тут не причем ваш хедер файл! дела ввашем коде, выложите код прогрраммы тоже.
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
28.07.2011, 10:09  [ТС]
Какой смысл выкладывать 1000 строк кода, в котором происходят рутинные операции. Если вам нужен клавиатурный тренажер, или вообще пишите ЛС.

допустим вот такая процедура
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
35
36
37
38
39
40
void __fastcall TMainForm::SetMinimalSize()
{
        //MainForm->Visible = false;
 
        MainForm->Menu = 0;
        Image1->Visible = false;
 
        MainForm->Width = 600;
        MainForm->Height = 100;
        MainForm->Left = ((Screen->Width)/2) - 300;
        MainForm->Top = Screen->Height- MainForm->Height - menuRect.Height();
 
        TextPanel->Width = 564;
        TextPanel->Height = 40;
        TextPanel->Top = 10;
        TextPanel->Left = 10;
 
        lRight->Font->Size = 16;
        lRight->Height = 25;
        lRight->Width = 250;
        lRight->Top = 7;
        lRight->Left = 300;
        lLeft->Font->Size = 16;
        lLeft->Height = 25;
        lLeft->Width = 250;
        lLeft->Top = 7;
        lLeft->Left = lRight->Left - lLeft->Width;
 
        PnlTime->Hide();
        PnlTime->Left = MainForm->Width - PnlTime->Width - 20;
        PnlTime->Top = 2;
 
        LabelSpeed->Hide();
        LabelPercent->Hide();
 
        MainForm->FormStyle = fsStayOnTop;
 
        //MainForm->Visible = true;
        miniSized = true;
}
Ну вот такая допустим.. по заголовку не было ясно что это SetOptimalSize???
О чем этот код может сказать? Не думаю, что кому то захочется разбирать 1000 строк ради такой мелочи..Тут скорее у человека совсем другой интерес, и это очевидно.

В хедере есть все что нужно.. надеюсь сюда заглянет человек, сталкивавшийся с подобной бедой :)
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
28.07.2011, 18:13
Fuckall666,
Блииин, я вам уже раз сто говорил что ваш хедер не имеет отношение к RegisterHotKey(); UnregisterHotKey();! Всё я сказал последнее слово далше разбераитес самы
0
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
28.07.2011, 19:18
Цитата Сообщение от Fuckall666 Посмотреть сообщение
Ну вот такая допустим.. по заголовку не было ясно что это SetOptimalSize???
О чем этот код может сказать? Не думаю, что кому то захочется разбирать 1000 строк ради такой мелочи..Тут скорее у человека совсем другой интерес, и это очевидно.
по заголовку не видно как ты используешь RegisterHotKey!
Боишься что кто-то скопирует твои "рутинные операции"?
ну честно - без кода...
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
28.07.2011, 19:44  [ТС]
Я не знаю уже как темы писать.. может 7-м заголовком все????


Цитата Сообщение от Fuckall666 Посмотреть сообщение
Приветствую. Сделал все как говорится тут:
RegisterHotKey
Ну хотите, перекопирую весь код в эту тему..
там 2 способа - оба не работают именно в одной моей программе

Добавлено через 12 минут
Цитата Сообщение от SalterOk Посмотреть сообщение
Боишься что кто-то скопирует твои "рутинные операции"?
Думаешь мне кода жалко? Все что там реализованно - сделанно спомощью форумов..

Дело в том, что программу не для себя делаю, это заказ
0
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
29.07.2011, 00:14
Ну если программа работает без ошибок и условие
C++
1
if (Msg.message == W M_HOTKEY)
всегда ложное - это значит что хоткей сообщения не перехвативаются - может RegisterHotKey() не регистрирует комбинации а возвращает ошибку, на которую ты наверно не проверяешь?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2011, 00:14
Помогаю со студенческими работами здесь

Выполнение действия при помощи RegisterHotKey
Привет всем! При использовании горячих клавиш в моей программе, я столкнулся с одной проблемой. Мне нужно, при нажатии определенных...

Зарегистрировать левую клавишу мышки с пoмощью RegisterHotKey?
Надо зарегистрировать как горячую клавишу левую кнопку мышки.Что только не пробовал RegisterHotKey(Handle,0,0,VK_LBUTTON); ...

RegisterHotKey
Опишите как пользоваться RegisterHotkey из библиотеки User32.dll Прочитал туторы и документацию но все равно не понимаю как ею...

Игнорируется RegisterHotKey()
Не понять почему, но все же факт. ЗЫ:Компилятор ошибок не выдает! bool noclip(HWND hwnd) { if(RegisterHotKey(NULL, 1,...

Qt winapi registerhotkey
Добрый вечер. Возникла нужда встроить в программу &quot;горячие клавиши&quot;. Чистыми средствами qt не получается сделать для windows глобальные...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru