Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122

Эмулирование нажатий клавиш

25.07.2010, 19:54. Показов 6904. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Есть задача - сэмулировать нажатие определенной клавиши.
Короче, есть игра, где по нажатию на клавишу "+" на панели с цыфрами (что справа) происходит определенное действие, тоже самое и с клавишой "-", причем изменить из никак нельзя, нажатие на основной клавиатуре (сверху букв з, х, ъ)не дает результатов.А сам я иногда играю на ноуте.
Вобщем задача отловить нажатие определенной клавиши и сэмулировать нажатие других клавиш (все должно делаться в фоне)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2010, 19:54
Ответы с готовыми решениями:

Считывание нажатий клавиш
В моем случае из окна предка вызывается новое окно. Мне нужно чтобы дочернее очно оставалось открытым, а клавиши считывались в родительском...

Перехват нажатий клавиш
Добрый вечер! Подскажите пожалуйста, как в консольном приложении перехватить нажатие клавиш на клавиатуре. Добавлено через 22 минуты...

Глобальная имитация нажатий клавиш
Изучаю C#, в программировании не первый год, поэтому решил сразу написать что-нибудь посерьезнее, чем hello world. Пишу бота для игры,...

21
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
25.07.2010, 20:20
WinApi, либо можете поискать уже готовые варианты. Наверняка кто-то делал уже.
0
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
25.07.2010, 22:21  [ТС]
Цитата Сообщение от Johny_D Посмотреть сообщение
WinApi
А можно по подробне
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
25.07.2010, 22:28
Ну насколько попдробней, в одном посте что надо сделать не уместиться. Знакомы с программой PuntoSwitcher? Знаете как она работает? Перехватывает нажатия клавиш, проверяет их, и если нужно, то генерирует последовательность, которая исправляет нажатия клавиш в неправильной раскладке(имхо). Следовательно вам нужен упрощенный аналог, перехватывающий системные нажатия клавиш, и подменяющий их на нужные вам. Настолько подробно подойдет?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
25.07.2010, 22:37
shalad, к описанному
Johny_D, добавлю только что если нет доступа к исходникам игры (тоесть код не ваш - а скорее всего так и есть) то нужно будет отсылать нужные комбинации целевой программе (смотрим в сторону SendMessage). Кстати перехват можно сделать с помощью хуков
0
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
26.07.2010, 00:58  [ТС]
Johny_D, да, с Punto Switcher знаком, но что толку от нее, если нет исходников к ней?

Alligieri, да, игра не моя, вот как раз и нужно узнать что такое хуки и что с этим едят
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
26.07.2010, 01:20
Не шарп конечно, но здесь есть интересующая инфа:
http://www.autoitscript.com/fo... howforum=2
или
http://www.autohotkey.com/
- сам когда-то делал hook'и на AutoHotkey'e (на выходе экзешник получается(если не знаком с этим))
0
210 / 96 / 6
Регистрация: 23.07.2010
Сообщений: 235
26.07.2010, 01:28
А если попробовать использовать встроенную функцию SendKeys

Например:

{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}

вот пример работы с Winampом:

C#
1
2
3
4
5
6
7
private void Form1_Load(object sender, EventArgs e)
        {
           int iHandle = Win32.FindWindow(null,"Winamp 5.111"); // Find the window handle
           iHandle = Win32.ShowWindow(iHandle,8);
           Win32.SetForegroundWindow(iHandle);
           SendKeys.Send("%({F4})"); // Send alt+F4  
        }
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
26.07.2010, 09:22
Fedogor, а ловить нажатия клавиш как?
0
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
26.07.2010, 12:33  [ТС]
Johny_D, Теоретически, ловить можно с помощью события OnKeyPress или чего-то подобное (точно не помню) Хотя наверно это события произойдет только если форма приложения активна
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
26.07.2010, 13:01
Цитата Сообщение от shalad Посмотреть сообщение
только если форма приложения активна
вот именно, ловить то нужно в совсем другом приложении.
0
210 / 96 / 6
Регистрация: 23.07.2010
Сообщений: 235
26.07.2010, 16:32
Вот небольшой пример по отлову, но он на С++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
  DWORD IsDown, ScanCode;
 
  IsDown = !(lParam >> 31);
  ScanCode = lParam << 8;
  ScanCode >>= 24;
 
  if (IsDown && code == HC_ACTION)
    ProccessDownKey(wParam, (unsigned char)ScanCode);//Обрабатываем
 
  return 0;
}
и статья из которой он взят: http://bugtraq.ru/library/prog... gging.html
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
26.07.2010, 18:05
ловить хуки можно с помощью класса UserActivityHook.cs который не сложно найти в интернете, а эмулировать нажатия мышки либо клавиатуры в приложение очень удобно с помощью библиотеки AutoItX3.dll

обо всём этом уже писалось на форуме
документацию по вышеперечисленному легко найти в интернете.

вопросы=)
0
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
26.07.2010, 18:35  [ТС]
Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
ловить хуки можно с помощью класса UserActivityHook.cs который не
вопросы=)
ага)
В инете ничего не нашел по поводу использования UserActivityHook на C#, может объясните?
По поводу AutoIt - знаком с этой библиотекой, приходилось ее использовать
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
26.07.2010, 20:00
Цитата Сообщение от shalad Посмотреть сообщение
ага)
В инете ничего не нашел по поводу использования UserActivityHook на C#, может объясните?
По поводу AutoIt - знаком с этой библиотекой, приходилось ее использовать
чуть позже выложу проект с использованием
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
26.07.2010, 21:43
там в Debug'e лежит прога в которой все хуки включены. посмотри.
и когда подключишь себе в прогу этот класс, в свойствах проекта разреши "отладку небезопасного кода" если не ошибаюсь, а то при компиляции будет выкидывать пустую ошибку постоянно.
Вложения
Тип файла: rar globalhook_src.rar (45.3 Кб, 65 просмотров)
1
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
27.07.2010, 17:39  [ТС]
EatingPeopleIsFun, Спасибо, я посмотрю завтра (я с ноута, там не установлена студия)
а пока +

Добавлено через 16 часов 48 минут
Посмотрел твой пример, все понял, кроме этого:
Как можно сделать условие типа
C#
1
2
3
4
если (клавиша == "PageUp")
{
// TO DO
}
А вот еще: Как можно с помощью AutoIt эмулировать кнопку "-" именно с панели что справа от клавы?

Добавлено через 2 часа 1 минуту
разобрался, просто пишешь типа:
C#
1
2
3
4
if (e.KeyCode == Keys.PageUp)
{
//To Do
}
Добавлено через 2 минуты
Кстати вроде на это форуме не нашел раздел AutoIt, тогда либо отправте меня по вдресу либо помогите плиз как можно эмулировать нажатия с правой ппанели
0
0 / 0 / 0
Регистрация: 27.07.2010
Сообщений: 6
27.07.2010, 18:09
Посмотри здесь, похожий вопрос
http://forum.codenet.ru/showthread.php?t=37974
0
 Аватар для shalad
7 / 7 / 2
Регистрация: 17.05.2010
Сообщений: 122
27.07.2010, 19:15  [ТС]
Nupa, Я там уже был, но ничего для себя не нашел
Сейчас мне нужно узнать как эмулировать ввод с цифровой панели (AutoIt наверно)

Добавлено через 37 минут
Все! Нашел! Нужно написать Send({NUMPADADD}); для "+" и Send("{NUMPADSUB}"); для "-" (AutoIt)
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
28.07.2010, 08:03
сам со всем справился)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.07.2010, 08:03
Помогаю со студенческими работами здесь

Глобальный перехват нажатий клавиш в системе
Всем доброго вечера. Хотелось реализовать программу которая будет при нажатии скажем Pause/Break? открывает Form2, пробовал так ...

Отправка нажатий клавиш в окно стороннего приложения
Есть код на C++, в нём реализован поиск нужного окна по известному классу, эмуляция нажатий клавиш именно в это окно, а также проверка...

Отправка нажатий клавиш в неактивное окно - SendMessage
Доброго времени суток, пытаюсь реализовать отправку нажатий клавиш/кликов в окно игры, но возникает проблема: С помощью spy++ не удается...

создание сниффера нажатий клавиш и кликов мыши вне формы
Можно ли стандартными средствами и контролами создать программу для записи и повторения кликов и нажатий клавиш происходящих не фокусе...

Эмулирование нажатия клавиши
Всем привет! Собственно нужно перехватить нажатия клавиш и если нажата какая то именно клавиша, то нужно заменить ее на другую!Например,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru