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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 114, средняя оценка - 4.87
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 00:04     Имитация нажатия клавиш С/С++ #1
Задача такая:
Программа должна имитировать нажатие клавиш в фоновом режиме. То-есть она должна нажимать заранее заданные кнопки(кнопку), с определенной периодичностью. Что-то вроде бота.
Каким способом это реализовать ? (на С или на С++ разницы нет, главное что бы работало)

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

C++ Отслеживание нажатия клавиш.
имитация нажатие двух клавиш на c++. (alt-f4) C++
имитация нажатия на заголовок окна (Borland C++) C++
C++ Распознавание нажатия клавиш
C++ Нажатия клавиш
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 00:06     Имитация нажатия клавиш С/С++ #2
Killan, так покажите решение - может быть кому-нибудь оно пригодится.
Killan
 Аватар для Killan
4 / 4 / 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"
Aaxenon
Light Knight
 Аватар для Aaxenon
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: вероятно, инициализатор, использующий стиль функции, является определением функции
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 18:26  [ТС]     Имитация нажатия клавиш С/С++ #5
Эм... логично, что у вас мой код работать не будет. Т.к я выложил лишь его часть, для наглядности
Aaxenon
Light Knight
 Аватар для Aaxenon
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);
не работает
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 19:57  [ТС]     Имитация нажатия клавиш С/С++ #7
Вы пишите на С++ или на С?
Не уверен, но возможно эта функция зависит от определенной библиотеки.
Какие библиотеки вы подключаете ?
Также попробуйте заменить "C" на её код. Код можно посмотреть например тут: http://www.realcoding.net/article/view/1857

PS. Данный выше код писался на Builder 6
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:24     Имитация нажатия клавиш С/С++ #8
использую MSVS C++..библиотеки подключаю обычные)и ругается на
Код
keybd_event и KEYEVENTF_KEYUP
Killan
 Аватар для Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 21:29  [ТС]     Имитация нажатия клавиш С/С++ #9
"обычные" очень обширное понятие)
Попробуйте подключить #include <Windows.h>
Я не работал на MSVS, причину сказать не могу.
Aaxenon
Light Knight
 Аватар для Aaxenon
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>СБОЙ построения.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:40     Имитация нажатия клавиш С/С++ #11
RoY_Mu$T@nG, User32.lib подключена?
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:47     Имитация нажатия клавиш С/С++ #12
где посмотреть
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:58     Имитация нажатия клавиш С/С++ #13
В настройках проекта. Configuration Properties - Linker - Command Line.
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 11:11     Имитация нажатия клавиш С/С++ #14
нет не подключен..как его правильно подключить?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 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")
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2010, 12:55     Имитация нажатия клавиш С/С++
Еще ссылки по теме:

Нереагирование на нажатия клавиш C++
C++ Отлов нажатия клавиш
Имитация нажатия клавиш C++

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

Или воспользуйтесь поиском по форуму:
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 12:55     Имитация нажатия клавиш С/С++ #16
всё скомпилилось, спасибо)
Yandex
Объявления
25.08.2010, 12:55     Имитация нажатия клавиш С/С++
Ответ Создать тему
Опции темы

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