Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52

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

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

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

Добавлено через 33 минуты
Вопрос решил, тему можно закрыть.
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.08.2010, 00:04
Ответы с готовыми решениями:

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

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

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

15
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 00:06
Killan, так покажите решение - может быть кому-нибудь оно пригодится.
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 01:01  [ТС]
Мой код:
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"
3
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 11:16
Code
1
2
3
1>123.cpp(7): error C3861: keybd_event: идентификатор не найден
1>123.cpp(8): error C2065: KEYEVENTF_KEYUP: необъявленный идентификатор
1>123.cpp(8): error C3861: keybd_event: идентификатор не найден
или вот так если полная функция
Code
1
2
3
4
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
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 18:26  [ТС]
Эм... логично, что у вас мой код работать не будет. Т.к я выложил лишь его часть, для наглядности
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 19:20
да это не суть...
C++
1
2
keybd_event('C', 0,0,0);
keybd_event('C', 0,KEYEVENTF_KEYUP,0);
не работает
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 19:57  [ТС]
Вы пишите на С++ или на С?
Не уверен, но возможно эта функция зависит от определенной библиотеки.
Какие библиотеки вы подключаете ?
Также попробуйте заменить "C" на её код. Код можно посмотреть например тут: http://www.realcoding.net/article/view/1857

PS. Данный выше код писался на Builder 6
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:24
использую MSVS C++..библиотеки подключаю обычные)и ругается на
Code
1
keybd_event и KEYEVENTF_KEYUP
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.08.2010, 21:29  [ТС]
"обычные" очень обширное понятие)
Попробуйте подключить #include <Windows.h>
Я не работал на MSVS, причину сказать не могу.
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:34
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;
}
Code
1
2
3
4
5
6
7
8
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
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:40
RoY_Mu$T@nG, User32.lib подключена?
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 21:47
где посмотреть
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 21:58
В настройках проекта. Configuration Properties - Linker - Command Line.
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 11:11
нет не подключен..как его правильно подключить?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
25.08.2010, 12:03
Лучший ответ Сообщение было отмечено SomniPhobia как решение

Решение

RoY_Mu$T@nG, либо в настроках проекта(Configuration Properties - Linker - Input - Additional Dependencies).
Либо через:
C++
1
#pragma comment(lib, "user32")
1
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
25.08.2010, 12:55
всё скомпилилось, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
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, пытался сделать, чтобы при нажатии клавиш программа...

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


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

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

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru