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

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

01.02.2015, 14:09. Показов 3470. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru