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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 114, средняя оценка - 4.87
Killan
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
#1

Имитация нажатия клавиш С/С++ - C++

24.08.2010, 00:04. Просмотров 18447. Ответов 15
Метки нет (Все метки)

Задача такая:
Программа должна имитировать нажатие клавиш в фоновом режиме. То-есть она должна нажимать заранее заданные кнопки(кнопку), с определенной периодичностью. Что-то вроде бота.
Каким способом это реализовать ? (на С или на С++ разницы нет, главное что бы работало)

Добавлено через 33 минуты
Вопрос решил, тему можно закрыть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 00:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Имитация нажатия клавиш С/С++ (C++):

Имитация нажатия клавиш - C++
как только и не пытался всё выводит одну и туже ошибку, помогите начинающему c++ юзеру #include <iostream> #include <Windows.h> ...

Имитация нажатия кнопки - C++
как программно сымитировать нажатие кнопки в программе нужно нажать кнопку PgUp а на клавиатуре ее нет как это можно сделать

Имитация нажатия клавиши - C++
Может кто помочь сделать прогу что бы она просто нажимала кнопку "E" с интервалом, 0,1 секунда, и включалась\выключалась по нажатию, на...

имитация нажатие двух клавиш на c++. (alt-f4) - C++
будет нажата клавиша p keybd_event('P', 0,0,0); keybd_event('P', 0,KEYEVENTF_KEYUP,0); Но как сделать чтобы нажималось две клавиши...

Имитация нажатия на заголовок окна (Borland C++) - C++
PostMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);не работает может с ней что-то не так? заранее спасибо

Нажатия клавиш - C++
В mfc нужно чтобы при нажатии клавиш, происходило действие. С помощью WM_KEYDOWN, пытался сделать, чтобы при нажатии клавиш программа...

15
CyBOSSeR
Эксперт С++
2308 / 1681 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 00:06 #2
Killan, так покажите решение - может быть кому-нибудь оно пригодится.
0
Killan
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 01:01  [ТС] #3
Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Sleep(5000); // за 5 секунд, переключаемся на нужное окно
for(int a=0,c=0; a<5; a++)
{
if(c!=0){
Sleep(80000);
}
 for(int b=0; b<2; b++)
keybd_event('C', 0,0,0);
keybd_event('C', 0,KEYEVENTF_KEYUP,0);
c++;
}
}
За имитацию нажатия клавиш, отвечают следующие строчки:

C++
1
2
keybd_event('C', 0,0,0);
keybd_event('C', 0,KEYEVENTF_KEYUP,0);
В данном примере эмулируется нажатие клавиши "C"
2
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 11:16 #4
Код
1>123.cpp(7): error C3861: keybd_event: идентификатор не найден
1>123.cpp(8): error C2065: KEYEVENTF_KEYUP: необъявленный идентификатор
1>123.cpp(8): error C3861: keybd_event: идентификатор не найден
или вот так если полная функция
Код
1>123.cpp(3): error C2653: TForm1: не является именем класса или пространства имен
1>123.cpp(3): error C2065: TObject: необъявленный идентификатор
1>123.cpp(3): error C2065: Sender: необъявленный идентификатор
1>123.cpp(4): error C2448: Button1Click: вероятно, инициализатор, использующий стиль функции, является определением функции
0
Killan
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 18:26  [ТС] #5
Эм... логично, что у вас мой код работать не будет. Т.к я выложил лишь его часть, для наглядности
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 19:20 #6
да это не суть...
C++
1
2
keybd_event('C', 0,0,0);
keybd_event('C', 0,KEYEVENTF_KEYUP,0);
не работает
0
Killan
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 19:57  [ТС] #7
Вы пишите на С++ или на С?
Не уверен, но возможно эта функция зависит от определенной библиотеки.
Какие библиотеки вы подключаете ?
Также попробуйте заменить "C" на её код. Код можно посмотреть например тут: http://www.realcoding.net/article/view/1857

PS. Данный выше код писался на Builder 6
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:24 #8
использую MSVS C++..библиотеки подключаю обычные)и ругается на
Код
keybd_event и KEYEVENTF_KEYUP
0
Killan
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 21:29  [ТС] #9
"обычные" очень обширное понятие)
Попробуйте подключить #include <Windows.h>
Я не работал на MSVS, причину сказать не могу.
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:34 #10
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <Windows.h>
int main()
{
    keybd_event('C', 0,0,0);
    keybd_event('C', 0,KEYEVENTF_KEYUP,0);
    system("PAUSE");
    return 0;
}
Код
1>ClCompile:
1>  123.cpp
1>  Для всех выходных данных обновления не требуется.
1>123.obj : error LNK2028: ссылка на неразрешенную лексему (0A0002C1) "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)" (?keybd_event@@$$J216YGXEEKK@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)" (?keybd_event@@$$J216YGXEEKK@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ)
1>C:\Users\Администратор\documents\visual studio 2010\Projects\12345\Release\12345.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
1>
1>СБОЙ построения.
0
CyBOSSeR
Эксперт С++
2308 / 1681 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:40 #11
RoY_Mu$T@nG, User32.lib подключена?
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:47 #12
где посмотреть
0
CyBOSSeR
Эксперт С++
2308 / 1681 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:58 #13
В настройках проекта. Configuration Properties - Linker - Command Line.
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 11:11 #14
нет не подключен..как его правильно подключить?
0
CyBOSSeR
Эксперт С++
2308 / 1681 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.08.2010, 12:03 #15
RoY_Mu$T@nG, либо в настроках проекта(Configuration Properties - Linker - Input - Additional Dependencies).
Либо через:
C++
1
#pragma comment(lib, "user32")
0
25.08.2010, 12:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2010, 12:03
Привет! Вот еще темы с ответами:

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

Обработка нажатия клавиш - C++
Здравствуйте! Необходимо решить следующую задачу: Есть консольное приложение, которое разрабатывается с использованием C++, с...

Отслеживание нажатия клавиш. - C++
#include &lt;iostream&gt; #include &lt;string&gt; #define FOR(i,a,b) for (int i(a), _n(b); i &lt; _n; ++i) using namespace std; int...

Отлов нажатия клавиш - C++
Доброго времени суток! Стоит задача при нажатии оперделенной клавиши выполнить действие. Код: #include &lt;windows.h&gt; #include...


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

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

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