Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
#1

FreeConsole - C++

12.05.2011, 21:07. Просмотров 1905. Ответов 8
Метки нет (Все метки)

Здравствуйте господа програмисты!!!
как отследить нажатие клавиши?допустим имеем вот это-
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
int main()
{
    FreeConsole();
    if(нажата клавиша f5 или какая то ещё){AllocConsole();cout<<"Hello";Sleep(1000);}
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
12.05.2011, 21:20 #2
в винде - ReadConsoleInput
0
Digit@ll
Brainsbreaker
884 / 362 / 31
Регистрация: 01.02.2011
Сообщений: 1,584
12.05.2011, 21:22 #3
Игорь с++, да возьмись ты уже за ум...
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
12.05.2011, 21:25  [ТС] #4
не понял вы о чём?возьмись за ум это к чему?

Добавлено через 1 минуту
ReadConsoleInput можно по подробней,хотя бы простенький исходник
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
12.05.2011, 21:31 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HANDLE input=GetStdHandle(STD_INPUT_HANDLE);
INPUT_RECORD irInBuf; 
DWORD cNumRead;
SetConsoleMode(input, ENABLE_WINDOW_INPUT);
ReadConsoleInput(input, &irInBuf, 1, &cNumRead);
if(irInBuf.EventType==KEY_EVENT) 
{ 
    if(irInBuf.Event.KeyEvent.bKeyDown)
    {                   
        WORD key=irInBuf.Event.KeyEvent.wVirtualKeyCode;
        if(key==VK_F5)
            cout<<"Hello";
    }
}
1
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
13.05.2011, 00:17  [ТС] #6
спасибо конечно но у меня программа без окна,висит в процесах и при нажатии на определённую клавишу должна выполнять определённое действие,а ваш пример работает только когда есть окно.
Так как же это реализовать?кто нибудь знает?

Добавлено через 30 минут
Digit@ll, Что ты мне всё спасибо жмёш???
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 10:48 #7
Все зависит от задачи. Если нужно просто фиксировать нажатые клавиши, то нужно ставить глобальный хук. Если просто хочешь сделать, чтобы при нажатии клавиши что-то выполнялось, то можно зарегистрировать глобальную горячую клавишу (RegisterHotKey).
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
16.05.2011, 20:50  [ТС] #8
RegisterHotKey как его использовать.покажите хотя бы простенький исходник
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
16.05.2011, 21:11 #9
http://mirsoft.3dn.ru/index/0-46
1
Yandex
Объявления
16.05.2011, 21:11
Ответ Создать тему
Опции темы

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