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

FreeConsole - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
12.05.2011, 21:07     FreeConsole #1
Здравствуйте господа програмисты!!!
как отследить нажатие клавиши?допустим имеем вот это-
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
12.05.2011, 21:20     FreeConsole #2
в винде - ReadConsoleInput
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,483
12.05.2011, 21:22     FreeConsole #3
Игорь с++, да возьмись ты уже за ум...
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
12.05.2011, 21:25  [ТС]     FreeConsole #4
не понял вы о чём?возьмись за ум это к чему?

Добавлено через 1 минуту
ReadConsoleInput можно по подробней,хотя бы простенький исходник
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
12.05.2011, 21:31     FreeConsole #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";
    }
}
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
13.05.2011, 00:17  [ТС]     FreeConsole #6
спасибо конечно но у меня программа без окна,висит в процесах и при нажатии на определённую клавишу должна выполнять определённое действие,а ваш пример работает только когда есть окно.
Так как же это реализовать?кто нибудь знает?

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

Текущее время: 10:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru