HLFX.Ru Forum Страницы (3): [1] 2 3 »
Показать все 36 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- эмуляция нажатия (https://hlfx.ru/forum/showthread.php?threadid=2049)


Отправлено BioHazard 06-01-2010 в 20:36:

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

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


Отправлено XaeroX 06-01-2010 в 21:13:

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 06-01-2010 в 21:15:

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

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено BioHazard 06-01-2010 в 21:44:

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


Отправлено Дядя Миша 06-01-2010 в 22:26:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено BioHazard 07-01-2010 в 13:19:

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


Отправлено Дядя Миша 07-01-2010 в 13:56:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено SiPlus 07-01-2010 в 18:23:

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


Отправлено BioHazard 07-01-2010 в 19:24:

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

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

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


Отправлено Дядя Миша 07-01-2010 в 20:21:

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'


Отправлено BioHazard 08-01-2010 в 14:13:

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


Отправлено XaeroX 08-01-2010 в 15:29:

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

__________________

xaerox on Vivino


Отправлено BioHazard 08-01-2010 в 15:31:

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


Отправлено BioHazard 10-01-2010 в 00:07:

с горем пополам разобрался с винапи, скомпилил, но вот мессагу в окно он упорно не хочет отправлять..
да и сам цикл по нажатии не начинается, а наоборот завершает процесс.. Если поменять местами 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
}


Отправлено Дядя Миша 10-01-2010 в 11:59:

Цитата:
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'


Временная зона GMT. Текущее время 22:18. Страницы (3): [1] 2 3 »
Показать все 36 сообщений этой темы на одной странице

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