![]() |
Страницы (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 проведи простой эксперимент. Поставь курсор в форму быстрого ответа, нажми, скажем, кнопку "пробел" и не отпускай. В нее начнут ставиться пробелы. Как только кнопка отпускается, цикл останавливается.
То есть, это как бе уже есть в Винде...
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
дело в том, что это нужно реализовать в одной игре... Доступа к сорцам нету, а зажав пробел прыгнет он там всего 1 раз =| поэтому и хочу прибегнуть к помощи извне..
BioHazard ну так ты запоминай што пробел зажат и генерь оттуда хаатычные импульсы, пока кнопку не отпустят. Делов-то.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
т.е. весь код это 6-7 строк условие+цикл? оке, стартуем
BioHazard цыкл общий юзай
додумался блин.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Есть программа AutoHotkey для этих дел
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'
ну с этим понятно, мне бы сначала узнать как в винде состояние кнопки узнать и как ее передавать в любое активное окно..
GetAsyncKeyState
SendMessage(WM_KEYDOWN)
SendMessage(WM_CHAR)
SendMessage(WM_KEYUP)
__________________
:>>> спасибо :>
с горем пополам разобрался с винапи, скомпилил, но вот мессагу в окно он упорно не хочет отправлять..
да и сам цикл по нажатии не начинается, а наоборот завершает процесс.. Если поменять местами true и false то наоборот, сразу с запуска начинается цикл, но стоит нажать кнопку он остановится =\
хотелось бы еще узнать о чтении флажков в командной строке, типа bhop.exe -shift -50... Без "-" то знаю что через argv[], но значения их него все равно в просто не сохранить в качестве переменной..
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 | } |
__________________
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