Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 24

Как отслеживать нажатие кнопок

14.08.2015, 22:58. Показов 3810. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как вообще отслеживать сообщения, в интернете находил блоки, типа
switch(Messege)
......
от куда это messege взять?

нужно ли для отслеживания сообщений использовать многопоточность?

Дайте инфу, или ссылку на нее плиз
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2015, 22:58
Ответы с готовыми решениями:

Как запретить нажатие кнопок
Как можно запретить нажимать кнопки, на пример Alt+Ctr+Del при помощи WinAPI и C++, у меня без оконное приложение. P.S есть ли какая...

Можно ли отслеживать нажатие цифровых кнопок?
Можно ли отслеживать нажатие цифровых кнопок? К примеру, если нажали 1, в браузере нажимается кнопка в форме 1 (submit), если 2, то 2

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

5
130 / 70 / 25
Регистрация: 20.03.2014
Сообщений: 261
14.08.2015, 23:03
Какие нажатия вам нужно отслеживать? В контексте чего? Вы хотите сделать кейлогер?
0
Респект C++
 Аватар для FCommander
23 / 33 / 14
Регистрация: 11.06.2015
Сообщений: 384
24.08.2015, 20:54
А что здесь трудного. Ну вот вам пример когда нажимаешь кнопку выходит сообщение о том, что вы ее нажали:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
В вайле .h:
#define IDC_BUTTON 100
В .cpp:
switch(message)
case WM_CREATE:
{
CreateWindowEx(0, "BUTTON", "Нажми меня", WS_CHILD |WS_VISIBLE, 30, 30, 50, 50, hwnd, (HMENU)IDC_BUTTON, GetModuleHandle(NULL), 0);
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_BUTTON:
{
MessageBox(hwnd, "Кнопка нажата", "Вы нажали на кнопку", MB_ICONINFORMATION);
}
}
}
Добавлено через 2 минуты
Будет непонятно - спрашивайте. Сработает - сообщите.

Добавлено через 10 секунд
Будет непонятно - спрашивайте. Сработает - сообщите.
2
1 / 1 / 2
Регистрация: 13.06.2013
Сообщений: 41
25.08.2015, 12:21
Прочитайте книгу Литвиненко Н. А. "Технология программирования на С++. Win32 API-приложения". Просто тупо читайте от начала до конца. Вам станет понятно все. Там все расписано, и все объяснено. Всего 281 стр. За вечер ее можно прочитать.
1
Респект C++
 Аватар для FCommander
23 / 33 / 14
Регистрация: 11.06.2015
Сообщений: 384
26.08.2015, 12:01
А я вам посоветую для начала "Основы программирования Win32 API" karelia.ru. Там много инфы и все очень просто понять.
1
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
27.08.2015, 14:48
Effolrkonium, не вопрос, но все-таки Это вас не спасёт, просто нужно самому интересоваться и не лениться.
Мини приложение Win32
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
#include <windows.h>
 
TCHAR GWndname[] = TEXT("SIMPLE_APP_WIN32_2015");// Класс,
TCHAR GAppname[] = TEXT("Мини приложение Win32");// заголовок Окна.
 
#define IDC_HELLO 1
HWND g_hButton;// Идентификатор Кнопки.
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LRESULT retval=0;
    int wmId, wmEvent;
    switch( uMsg ) {
    case WM_CREATE: {
        // Создать кнопку.
        g_hButton = CreateWindow(TEXT("BUTTON"),TEXT("Привет"),WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,10,10,100,34,hWnd,(HMENU)IDC_HELLO,GetModuleHandle(NULL),NULL);
        if( g_hButton==NULL ) {
            MessageBox(NULL,TEXT("Не удалось создать кнопку"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
            SendMessage(hWnd,WM_CLOSE,0,0);
            }
        }
        break;
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch( wmId ) {
            case IDC_HELLO: {
                MessageBox(hWnd,TEXT("Здравствуй, Мир!"),TEXT("Кнопка Привет"),MB_OK|MB_ICONINFORMATION|MB_SETFOREGROUND|MB_TOPMOST);
                break;
            }
        }
        break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        retval = DefWindowProc(hWnd,uMsg,wParam,lParam);
        break;
    }
    return retval;
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style         = CS_HREDRAW|CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = GWndname;
    wc.hIconSm       = NULL;
    if( !RegisterClassEx(&wc) ) {
        MessageBox(NULL,TEXT("Не удалось зарегистрировать Класс"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
        return 1;
    }
    HWND hWnd=CreateWindowEx(WS_EX_CLIENTEDGE,GWndname,GAppname,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,640,400,NULL,NULL,hInstance,NULL);
    if( hWnd==NULL ) {
        MessageBox(NULL,TEXT("Не удалось создать Окно"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
        return 1;
    }
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while( GetMessage(&msg,NULL,0,0) ) {
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}
// <<eof>>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2015, 14:48
Помогаю со студенческими работами здесь

Отслеживать нажатие определенной клавиши
Надеюсь, не ошибся разделом. Мне нужно отследить нажатие определенной клавиши(а именно CAPS Lock). Погуглив, я нашел только, как...

Как можно отловить нажатие системных кнопок?
Доброго Вам времени суток!!! Подскажите, как можно отлавить нажатие системных кнопок (закрытие окно, сворачивание окна). Мне нужно...

Как обработать нажатие кнопок в стандартном MessageBox
Подскажите, кто знает как обработать нажатие кнопок ОК/Отмена в стандартном MessageBox. К примеру код программы выглядит так: ...

Как отследить нажатие кнопок на форме VBA
Добрый день! Есть форма VBA с пятнадцатью кнопками. Caption кнопок - числа от 1 до 15. Нужно, чтобы при клике по любой кнопке её число...

Нужна помощь! Как сделать Ожидание нажатие кнопок?
Нужно написать программу на Си, которая при нажатии &quot;стрелочки влево&quot; начинает с задержкой в 0.5 секунд писать букву &quot;D&quot;, а при...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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 с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru