Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Nice-crazy
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
1

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

01.02.2015, 14:09. Просмотров 1112. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2015, 14:09
Ответы с готовыми решениями:

Клик мыши в неактивном окне
Открыто окно Opera, свёрнут Google Chrome Мы запускаем программу, которая...

Как сделать так, чтобы в окне, созданом OpenGL, рисовали 2 потока?
Вот не знаю, где создать тему, с одной стороны это надо в разделе OpenGL, с...

Как сделать распознавания текста в окне программы и делать эмуляцию нажатия клавиш
Помогите пожалуйста!

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

Как можно сделать что бы в консольном окне можно было вызвать контекстное меню как в win cmd?
Если вызвать cmd в windows то в нем можно вызывать контекстное меню и совершать...

24
Nice-crazy
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 00:37  [ТС] 21
Цитата Сообщение от kravam Посмотреть сообщение
По хукам обалденно расписано у Айзелиона, но там ассемблер. Недельки две посидишь, всё поймёшь, перенесёшь на С++. Если не лень.
http://www.wasm.ru/wault/article/show/1001024
да я с++ ток вот пол года назад начал учить(в колледже)
а тут с языка того на этот,ты чо)
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
02.02.2015, 12:29 22
Как то так , я думаю ( по 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
Nice-crazy
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 14:15  [ТС] 23
Цитата Сообщение от Игорь с++ Посмотреть сообщение
( по F2 выход из программы )
А где в коде написать чтоб в том окне что создается был текст,найти не могу

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

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

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

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

Добавлено через 21 минуту
Все порешал,осталось только одно,как сделать чтоб когда кнопки нажимаешь их не выводило на экран,а выводило ток ф2
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
02.02.2015, 14:47 24
Цитата Сообщение от 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
Nice-crazy
5 / 5 / 5
Регистрация: 10.03.2013
Сообщений: 139
02.02.2015, 22:24  [ТС] 25
А как сделать чтоб в том появившем окне был написан мой текст(windows app)

Добавлено через 26 минут
все нашел)
C++
1
2
     CreateWindow(TEXT("STATIC"),TEXT("Тут текст"),WS_VISIBLE | WS_CHILD,
      10,10,100,25,hwnd,(HMENU)NULL,NULL,NULL);
0
02.02.2015, 22:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2015, 22:24

Как сделать ввод с клавиатуры?
как сделать ввод с клавиатуры( фио,возраст,бал) и как сделать цикл вода даных ...

Как сделать ввод с клавиатуры?
Подскажите, как переделать под ввод данных a и b с клавиатуры #include...

Как сделать ввод элементов массива с клавиатуры?
Всем привет. Препод пристал что бы я сделал так что пользователь задавал...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru