HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > эмуляция нажатия
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



эмуляция нажатия

Прошу помощи с написанием мини программки, которая отслеживала бы состояние определенной кнопки (нажата/не нажата) и эмулировала бы нажатия этой кнопки энное количество раз пока нажата сама кнопка.. как только кнопка отпускается, цикл останавливается..
Проблема еще и в том, чтобы кнопка "нажималась" даже если кроме нее нажато что то еще..

Сообщить модератору | | IP: Записан
Сообщение: 50003

Старое сообщение 06-01-2010 20:36
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34540
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


BioHazard проведи простой эксперимент. Поставь курсор в форму быстрого ответа, нажми, скажем, кнопку "пробел" и не отпускай. В нее начнут ставиться пробелы. Как только кнопка отпускается, цикл останавливается.
То есть, это как бе уже есть в Винде...

__________________

Сообщить модератору | | IP: Записан
Сообщение: 50005

Старое сообщение 06-01-2010 21:13
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32231
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
То есть, это как бе уже есть в Винде...

я больше скажу - скорость автоповтора можно настроить аж в биосе.
То есть это на аппаратном уровне заложено и будет работать везде.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50007

Старое сообщение 06-01-2010 21:15
-
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



дело в том, что это нужно реализовать в одной игре... Доступа к сорцам нету, а зажав пробел прыгнет он там всего 1 раз =| поэтому и хочу прибегнуть к помощи извне..

Сообщить модератору | | IP: Записан
Сообщение: 50011

Старое сообщение 06-01-2010 21:44
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32231
Нанёс повреждений: 392 ед.

Рейтинг



BioHazard ну так ты запоминай што пробел зажат и генерь оттуда хаатычные импульсы, пока кнопку не отпустят. Делов-то.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50016

Старое сообщение 06-01-2010 22:26
-
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



т.е. весь код это 6-7 строк условие+цикл? оке, стартуем

Сообщить модератору | | IP: Записан
Сообщение: 50029

Старое сообщение 07-01-2010 13:19
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32231
Нанёс повреждений: 392 ед.

Рейтинг



BioHazard цыкл общий юзай
додумался блин.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50031

Старое сообщение 07-01-2010 13:56
-
SiPlus
GMod Lua Coder
Девойс

Дата регистрации: Jun 2007
Проживает: Санкт-Петербург
Сообщений: 317
Возраст: 27

Рейтинг



Есть программа AutoHotkey для этих дел

Сообщить модератору | | IP: Записан
Сообщение: 50037

Старое сообщение 07-01-2010 18:23
- За что?
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



Цитата:
SiPlus писал:
Есть программа AutoHotkey для этих дел

не вариант, ибо при нажатии какой нибудь другой клавиши цикл прекращается..

щя винапи поковыряем

Сообщить модератору | | IP: Записан
Сообщение: 50038

Старое сообщение 07-01-2010 19:24
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32231
Нанёс повреждений: 392 ед.

Рейтинг



BioHazard я тебя научу.
Заведи массив для всех кнопок и храни там их состояние.
Допстим пришел импульс на то что кнопка G нажата.
пишешь в массив труе напротив G.
В общем цикле проверяешь нажатые кнопки и генеришь для них импульсы с определенной переодичностью. Тебе понадобится еще массив для хранения времени, прошедшего с момента нажатия кнопки.
Как только кнопка отжимается - приходит импульс, обнуляешь состояние конкретной кнопки. Тривиальная задачка, работы на час.
И то больше времени на создание нового проекта уйдет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50039

Старое сообщение 07-01-2010 20:21
-
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



ну с этим понятно, мне бы сначала узнать как в винде состояние кнопки узнать и как ее передавать в любое активное окно..

Сообщить модератору | | IP: Записан
Сообщение: 50057

Старое сообщение 08-01-2010 14:13
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34540
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


GetAsyncKeyState
SendMessage(WM_KEYDOWN)
SendMessage(WM_CHAR)
SendMessage(WM_KEYUP)

__________________

Сообщить модератору | | IP: Записан
Сообщение: 50058

Старое сообщение 08-01-2010 15:29
-
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



:>>> спасибо :>

Сообщить модератору | | IP: Записан
Сообщение: 50059

Старое сообщение 08-01-2010 15:31
- За что?
BioHazard
Jess Liberty C++ за 21 день

Дата регистрации: Nov 2008
Проживает: (void)
Сообщений: 274

Рейтинг



с горем пополам разобрался с винапи, скомпилил, но вот мессагу в окно он упорно не хочет отправлять..
да и сам цикл по нажатии не начинается, а наоборот завершает процесс.. Если поменять местами true и false то наоборот, сразу с запуска начинается цикл, но стоит нажать кнопку он остановится =\
хотелось бы еще узнать о чтении флажков в командной строке, типа bhop.exe -shift -50... Без "-" то знаю что через argv[], но значения их него все равно в просто не сохранить в качестве переменной..

C++ Source Code:
1
#include "stdafx.h"
2
#include "fstream.h"
3
#include "windows.h"
4
void bhop(void)
5
{
6
  SendMessage(GetForegroundWindow(), WM_KEYDOWN, VK_SPACE, NULL);
7
  SendMessage(GetForegroundWindow(), WM_CHAR, VK_SPACE, NULL);
8
  SendMessage(GetForegroundWindow(), WM_KEYUP, VK_SPACE, NULL);
9
}
10
 
11
void main()
12
{
13
  do
14
  {
15
    while(GetAsyncKeyState(VK_SPACE) == true)
16
      bhop();
17
  }
18
  while(GetAsyncKeyState(VK_SPACE) == false);
19
}

Сообщить модератору | | IP: Записан
Сообщение: 50113

Старое сообщение 10-01-2010 00:07
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32231
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
BioHazard писал:
SendMessage(GetForegroundWindow(), WM_KEYDOWN, VK_SPACE, NULL);
SendMessage(GetForegroundWindow(), WM_CHAR, VK_SPACE, NULL);
SendMessage(GetForegroundWindow(), WM_KEYUP, VK_SPACE, NULL);

Вот это што за ужос такой
А если бы тебе Ксерокс написал "МаоЦзедун" ты бы в коде тоже написал "МаоЦзедун" ?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 50115

Старое сообщение 10-01-2010 11:59
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 06:14. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > эмуляция нажатия
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024