5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
1

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

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

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

Добавлено через 33 минуты
Вопрос решил, тему можно закрыть.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2010, 00:04
Ответы с готовыми решениями:

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

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

Имитация нажатия кнопки
как программно сымитировать нажатие кнопки в программе нужно нажать кнопку PgUp а на клавиатуре ее...

Имитация нажатия русских букв
Как симитировать нажатие букв Б, Ю, Ж, Э, Х, Ъ?

15
Эксперт С++
2339 / 1712 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 00:06 2
Killan, так покажите решение - может быть кому-нибудь оно пригодится.
0
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
Light Knight
106 / 29 / 5
Регистрация: 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
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 18:26  [ТС] 5
Эм... логично, что у вас мой код работать не будет. Т.к я выложил лишь его часть, для наглядности
0
Light Knight
106 / 29 / 5
Регистрация: 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
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
Light Knight
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:24 8
использую MSVS C++..библиотеки подключаю обычные)и ругается на
Код
keybd_event и KEYEVENTF_KEYUP
0
5 / 5 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 21:29  [ТС] 9
"обычные" очень обширное понятие)
Попробуйте подключить #include <Windows.h>
Я не работал на MSVS, причину сказать не могу.
0
Light Knight
106 / 29 / 5
Регистрация: 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
Эксперт С++
2339 / 1712 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:40 11
RoY_Mu$T@nG, User32.lib подключена?
0
Light Knight
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:47 12
где посмотреть
0
Эксперт С++
2339 / 1712 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:58 13
В настройках проекта. Configuration Properties - Linker - Command Line.
0
Light Knight
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 11:11 14
нет не подключен..как его правильно подключить?
0
Эксперт С++
2339 / 1712 / 148
Регистрация: 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
Light Knight
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 12:55 16
всё скомпилилось, спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2010, 12:55

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

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

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

Отлов нажатия клавиш
Доброго времени суток! Стоит задача при нажатии оперделенной клавиши выполнить действие. Код: ...


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

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

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