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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 92, средняя оценка - 4.65
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
#1

Работа с клавиатурой - C++

14.03.2008, 15:42. Просмотров 11642. Ответов 15
Метки нет (Все метки)

при работе с курсовой столкнулся с задачей: выполнять действие сразу как только будет нажата какая-либо клавиша(желательно одна из стрелок). задача кажется несложной но никак не могу достигнуть желаемого. помогите каким нибудь исходником или примером.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2008, 15:42     Работа с клавиатурой
Посмотрите здесь:

работа с клавиатурой - Visual C++
скажите пожалуйста как сделать так ,чтобы сразу после нажатия клавиши включался автоповтор.

Работа с клавиатурой - C++ WinAPI
Добрый день:)У меня тут програмка новая нарисовалась там предназначена работа с клавой так вот в окне в котором нужна клава нет ни одного...

Работа с клавиатурой - C++
Чюваки!!! подскажите плз какие есть операции с клавиатурой в c/c++.....ну типа redkey как в паскале... заранее спасибо

Работа с клавиатурой. - C++
Итак, понадобилось поработать с клавой. Прочитал про keybd_event и иже с ними. Но вопрос-можно ли отключить клавиатуру? То есть, чтобы при...

Работа с клавиатурой - C++
Здраствуйте, есть задача эмулировать нажатия клавиш, но winapi не выход, либо там где нада использовать эмуляцию срабатывает защита от...

Работа с клавиатурой в C++ Builder - C++ Builder
Кто знает ресурсы где есть обучение про работу с клавиатурой в С++ ,в инете ссылки какието или книги!Срочно нужно!

Работа с клавиатурой в графическом режиме - C++
Пишу программу в графическом режиме. Для ввода чисел написал свою функцию, где использую getch(). Но заметил, что если запустить программу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mik-a-el
CyberForum Owner
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
14.03.2008, 15:45     Работа с клавиатурой #2
Работа с клавиатурой
Обнаружение нажатия клавиш
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
14.03.2008, 16:05  [ТС]     Работа с клавиатурой #3
хороший пример Обнаружение нажатия клавиш но мне нельзя API использовать: я в Borland C++ делаю курсовик. в нём есть подобное? буду очень благодарен.
Lord_Voodoo
Супер-модератор
8580 / 2180 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
14.03.2008, 17:11     Работа с клавиатурой #4
а почему нельзя апишные функции использовать?
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
15.03.2008, 11:02  [ТС]     Работа с клавиатурой #5
я знаю только то что API функция работает и какой результат а мне надо знать алгоритм её и знать что делает каждая строчка
mik-a-el
CyberForum Owner
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
15.03.2008, 11:12     Работа с клавиатурой #6
Цитата Сообщение от Torov
я знаю только то что API функция работает и какой результат а мне надо знать алгоритм её и знать что делает каждая строчка
) Апишные функции - это единственное средство использования возможностей ОС, дальше уже некуда. Чтобы знать, что делает каждая строчка такой функции, необходим доступ к исходникам ОС.
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
15.03.2008, 11:41  [ТС]     Работа с клавиатурой #7
API функции в Borland C++ работают?
Lord_Voodoo
Супер-модератор
8580 / 2180 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
15.03.2008, 11:43     Работа с клавиатурой #8
вообще-то апишные функции работают в винде, им все равно из какого компилера их вызывают
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
15.03.2008, 12:15  [ТС]     Работа с клавиатурой #9
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
 
void main()
{
if (GetKeyState(VK_NUMLOCK)==1)
cout << "NumLock ON" << endl; 
else
cout << "NumLock OFF" << endl;
}
пример хороший я попробовал тока вместо VK_NUMLOCK надо вставить названия кнопок со стрелками а я их не знаю. где это глянуть или напишите плз
Lord_Voodoo
Супер-модератор
8580 / 2180 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
15.03.2008, 12:16     Работа с клавиатурой #10
в билдере в хелпе посмотри key codes, там все коды указаны
mik-a-el
CyberForum Owner
57120 / 36870 / 231
Регистрация: 10.04.2006
Сообщений: 12,660
15.03.2008, 12:21     Работа с клавиатурой #11
Цитата Сообщение от Torov
API функции в Borland C++ работают?
Любая программа в любой ОС взаимдействует с ней через какое-либо API. Поэтому эти функции доступны везде
Torov
1 / 1 / 0
Регистрация: 14.03.2008
Сообщений: 7
15.03.2008, 12:22  [ТС]     Работа с клавиатурой #12
такое дело: билдера у меня нет я Visual предпочитаю а качать тока ради кодов нехочется
Lord_Voodoo
Супер-модератор
8580 / 2180 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
15.03.2008, 12:27     Работа с клавиатурой #13
ну это будут VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT
Olegich
Сообщений: n/a
26.05.2009, 16:22     Работа с клавиатурой #14
Помогите пожалуйста, столкнулся с такой проблемой. Необходимо, чтобы при условии активного Scroll Lock, запускался цикл и как только Scroll Lock становится неактивным, прерывался.
С первым все в порядке, проблема в том, что как я не старался не могу цикл прервать, цикл продолжает работу не зависимо от Scroll lock.
Пробовал различные варианты, как только не мудрил-все равно, софтина не отзывается, не реагирует не начто, тока Kill.
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int a=GetKeyState(VK_SCROLL);
while (a==1)
{
a=GetKeyState(VK_SCROLL);
keybd_event(VK_PRIOR, 0,0,0);
keybd_event(VK_PRIOR, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
keybd_event(VK_NEXT, 0,0,0);
keybd_event(VK_NEXT, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
}
 
}
Сам цикл-нажатие клавиш PageDown-PageUp с интервалом.
В чем же ошибка я не пойму?
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
26.05.2009, 18:38     Работа с клавиатурой #15
Цитата Сообщение от Olegich Посмотреть сообщение
Помогите пожалуйста, столкнулся с такой проблемой. Необходимо, чтобы при условии активного Scroll Lock, запускался цикл и как только Scroll Lock становится неактивным, прерывался.
С первым все в порядке, проблема в том, что как я не старался не могу цикл прервать, цикл продолжает работу не зависимо от Scroll lock.
Пробовал различные варианты, как только не мудрил-все равно, софтина не отзывается, не реагирует не начто, тока Kill.
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int a=GetKeyState(VK_SCROLL);
while (a==1)
{
a=GetKeyState(VK_SCROLL);
keybd_event(VK_PRIOR, 0,0,0);
keybd_event(VK_PRIOR, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
keybd_event(VK_NEXT, 0,0,0);
keybd_event(VK_NEXT, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
}
 
}
Сам цикл-нажатие клавиш PageDown-PageUp с интервалом.
В чем же ошибка я не пойму?
Здесь:
C++
1
while (a==1)
у тебя а всегда одинаковое, добавь
C++
1
a=GetKeyState(VK_SCROLL)
внутрь цикла
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2009, 18:53     Работа с клавиатурой
Еще ссылки по теме:

Работа с клавиатурой. Графический режим. - C++
Построить прямоугольник фиксированных размеров. Нажатие на клавишу Enter циклически изменяет цвет прямоугольника, F10 — завершает работу...

Работа с клавиатурой win api - C++ WinAPI
case WM_PAINT: hdc = BeginPaint(hWnd, &amp;ps); GetClientRect(hWnd, &amp;rect); InvalidateRect(hWnd, NULL, TRUE); hdc =...

Управление клавиатурой - C++ Builder
Как сделать, чтобы с помощью программы эмулировался ввод с клавиатуры? например после нажатия кнопки нажимались по порядку буквы a b c?

Какое событие работает с клавиатурой? - C++ WinAPI
Какое событие необходимо создать в главной функции для того, чтобы программа реагировала на нажатие определенной клавиши. Нигде не могу...

проверка оборудования, управление клавиатурой с++ - C++
Написать программу на С++ ( у меня стоит Visual Studio 2010 Express , C++) с помою вместе нажатых клавиш правый Shift + левый Alt + F7 ...


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

Или воспользуйтесь поиском по форуму:
Olegich
Сообщений: n/a
26.05.2009, 18:53     Работа с клавиатурой #16
добавь
a=GetKeyState(VK_SCROLL)
внутрь цикла
оно и так ведь присутствует в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int a=GetKeyState(VK_SCROLL);
while (a==1)
{
[B]a=GetKeyState(VK_SCROLL);[/B]
keybd_event(VK_PRIOR, 0,0,0);
keybd_event(VK_PRIOR, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
keybd_event(VK_NEXT, 0,0,0);
keybd_event(VK_NEXT, 0,KEYEVENTF_KEYUP,0);
Sleep(2000);
} 
}
Yandex
Объявления
26.05.2009, 18:53     Работа с клавиатурой
Ответ Создать тему
Опции темы

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