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

C++

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

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

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

при работе с курсовой столкнулся с задачей: выполнять действие сразу как только будет нажата какая-либо клавиша(желательно одна из стрелок). задача кажется несложной но никак не могу достигнуть желаемого. помогите каким нибудь исходником или примером.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mik-a-el
CyberForum Owner
56746 / 36496 / 231
Регистрация: 10.04.2006
Сообщений: 12,633
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
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 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
56746 / 36496 / 231
Регистрация: 10.04.2006
Сообщений: 12,633
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
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 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
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
15.03.2008, 12:16     Работа с клавиатурой #10
в билдере в хелпе посмотри key codes, там все коды указаны
mik-a-el
CyberForum Owner
56746 / 36496 / 231
Регистрация: 10.04.2006
Сообщений: 12,633
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
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 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++ Работа с клавиатурой
проверка оборудования, управление клавиатурой с++ C++
Работа с клавиатурой win api C++ WinAPI
Работа с клавиатурой в C++ Builder C++ Builder
Работа с клавиатурой, сочетания клавиш, блокировка клавиш C++

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

Или воспользуйтесь поиском по форуму:
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     Работа с клавиатурой
Ответ Создать тему
Опции темы

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