Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139

Как сделать распознавание клавиатуры в неактивном окне?

01.02.2015, 14:09. Показов 3270. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим сижу такой в браузере,нажимаю кнопку(ASCII 33(ALT+1=!)) и моя программа начинает работать.
Вот сделал пример,работает если только зайти в программу и нажать ALT+1,а нужно чтоб она была свернута и ппи нажатии ALT+1 начинала работать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <unistd.h>
using namespace std;
int main() 
{
int k=getch();
float a=1;
    if (k==33) {
 do{
    Sleep(50);
    keybd_event(32, 0, 0, 0);
    Sleep(25);
    keybd_event(32, 0, KEYEVENTF_KEYUP, 0);
    cout<<a<<"\n";
    a=a+0.01;
}while(a<=100);
    }           
    return 0;       
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2015, 14:09
Ответы с готовыми решениями:

Программа эмулирует нажатие клавиш клавиатуры в неактивном окне
Всем привет! Требуется написать программу которая эмулирует нажатие клавиш клавиатуры в неактивном окне, выбираю процесс, задаю допустим...

Flash в WebBrouser, генерация событий мыши и клавиатуры в неактивном окне
Доброго времени суток. Недавно у меня возникла задача: необходимо перехватывать события мыши (типа click mouseup mousedown move) и...

Как ловить колесико в неактивном окне?
Надо ловить колесико в неактивном окне (без фокуса), желать его активным нельзя... Прога на C++, только WinAPI, никаких МФЦ, ВСЛ и тому...

24
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 00:37  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от kravam Посмотреть сообщение
По хукам обалденно расписано у Айзелиона, но там ассемблер. Недельки две посидишь, всё поймёшь, перенесёшь на С++. Если не лень.
http://www.wasm.ru/wault/article/show/1001024
да я с++ ток вот пол года назад начал учить(в колледже)
а тут с языка того на этот,ты чо)
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
02.02.2015, 12:29
Как то так , я думаю ( по F2 выход из программы )
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <windows.h>
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
 
char vk2 [1] = {0} ;
 
HWND hwnd;
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
                   /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
LRESULT CALLBACK LLKeyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode == HC_ACTION)
    {
        DWORD vk = ((LPKBDLLHOOKSTRUCT)lParam)->vkCode;
 
if (wParam==WM_KEYDOWN){
 
if(vk == 0x71)
        {
 
              MessageBox(hwnd,"Âû âûøëè èç ïðîãðàììû","",MB_OK);
            PostQuitMessage(0);
 
}
 
 vk2[0]=CHAR(vk);
 
 MessageBox(hwnd,vk2,"",MB_OK);
 
}
 
}
 
    return CallNextHookEx(NULL, nCode, wParam, lParam);
 
}
 
 
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        
        HHOOK hook;
    
    switch (message)                  /* handle the messages */
{
 
case WM_CREATE:
 
 
     hook = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyProc, GetModuleHandle(NULL), 0);
 
 
     break;
 
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
1
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 14:15  [ТС]
Цитата Сообщение от Игорь с++ Посмотреть сообщение
( по F2 выход из программы )
А где в коде написать чтоб в том окне что создается был текст,найти не могу

Добавлено через 14 минут
Вот это кодище блин,пытаюсь вбить цикл (do while или for ошибок куча выдает)

А можно этот код до минимума?чтоб циклы хотяб мог делать,или это и есть минимум

Добавлено через 2 минуты
в общем осталось ток как сделать цикл в нем,остальное немного понял

Добавлено через 3 минуты
и еще одно wincl.lpszMenuName = NULL; как меню сделать,заместь null написать свое имя и каким образом его вбить в прогу

Добавлено через 21 минуту
Все порешал,осталось только одно,как сделать чтоб когда кнопки нажимаешь их не выводило на экран,а выводило ток ф2
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
02.02.2015, 14:47
Цитата Сообщение от Nice-crazy Посмотреть сообщение
Все порешал,осталось только одно,как сделать чтоб когда кнопки нажимаешь их не выводило на экран,а выводило ток ф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
LRESULT CALLBACK LLKeyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode == HC_ACTION)
    {
        DWORD vk = ((LPKBDLLHOOKSTRUCT)lParam)->vkCode;
 
if (wParam==WM_KEYDOWN){
 
if(vk == 0x71)
        {
 
              MessageBox(hwnd,"Âû âûøëè èç ïðîãðàììû","",MB_OK);
            PostQuitMessage(0);
 
}
 
 
 
}
 
}
 
    return CallNextHookEx(NULL, nCode, wParam, lParam);
 
}
1
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 22:24  [ТС]
А как сделать чтоб в том появившем окне был написан мой текст(windows app)

Добавлено через 26 минут
все нашел)
C++
1
2
     CreateWindow(TEXT("STATIC"),TEXT("Тут текст"),WS_VISIBLE | WS_CHILD,
      10,10,100,25,hwnd,(HMENU)NULL,NULL,NULL);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2015, 22:24
Помогаю со студенческими работами здесь

События в неактивном окне (в окне без фокуса)
Делаю для себя программу, которая будет отображать нажатия определенных клавиш. Например, во время игры. Для примера сделал окно с...

Как сделать так, когда я ввожу информацию в окне 2, то она появлялась в главном окне тобишь в окне 1?
В общем нужно создать просто приложение по типу инсталятора с кнопками далее или назад. И я ввожу информацию в textbox допустим и она...

Работа в неактивном окне
Народ, подскажете как, ну или ссылку на информацию дайте, как можно сделать следующее: заставить программу работать даже тогда, когда окно...

Клик в неактивном окне
всем привет,помогите плиз,не пойму в чём дело F1 в неактивном окне нажимает,а по координатам не клацает=(,не пойму,что не так... ...

Нажатие клавиш в неактивном окне
Здравствуйте. Есть окно, оно не активно. Нужно программно послать нажатие какой-то клавиши, например Пробела, не делая окно активным


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс). Класс Задание В дереве проекта нажимаем правой. . .
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика. Палитра блоков Слева находится палитра. Нас интересует. . .
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании. Метод. . .
[golang] Linked list
alhaos 22.05.2026
Связный список / Linked list Связный список структура данных позволяющая хранить список значений, в отличии от массива в памяти хранится не сплошным куском, а отдельными частями которые ссылаются. . .
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru