1

Тема: AHK: запоминание последнего введённого числа и ввод числа при команде

Приветствую.

Нужно чтобы АХК запоминало последнее веденное число и дальше при вводе определенное команды АХК автоматически вписывало это число и определенный текст. К примеру:

ввожу команду /pr 1004 и АХК должно запоминать это число(1004) и если будет введена команда /vs1 ахк автоматически впишет нужный мне текст, к примеру (/vs 1004  "посмотрю" и нажимало Enter).
Что то по типу такого:
:*?:пр1::привет, только после команды /vs1 ахк сразу же вписывало текст (/vs последнее мною введенное число и текст "посмотрю"

Но важное условие, число должно запоминаться только одно. К примеру если я ввел 1004, (не вводя /vs 1004), а потом ввел 1005, при команде /vs1 должно вписаться именно число 1005.

Надеюсь понятно объяснил. Какие нужно использовать функции для такого АХК? Буду заранее благодарен.

2

Re: AHK: запоминание последнего введённого числа и ввод числа при команде

Скорее всего нужно смотреть в сторону перехвата ввода через 'InputHook'. Затем сохранять текст с обрезкой лишнего текста (если нужно).
Вставить текст из переменной проще всего реализовать через 'Send', но если вводить в игру нужно учитывать как принимает окно игры ввод от скрипта. Возможно поможет вставка из буфера.

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: запоминание последнего введённого числа и ввод числа при команде

Возможно, https://ahk-wiki.ru/input .

input караулит ввод
получив, сравнивает
если /pr 1004
то запоминает 1004
и снова караулит
получив, ищет /vs1
найдя - склеивает нужную строку и отправляет.

А у меня как раз похожая задача: требуется отслеживать нажатие определённых клавиш, не приостанавливая выполнение скрипта. Например, KeyWait мне отлично подошла бы, если бы на ней скрипт не останавливался в ожидании. Мне нужно именно на лету ловить. Нет такого?

4

Re: AHK: запоминание последнего введённого числа и ввод числа при команде

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

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

5 (изменено: fyvfevfev, 2024-08-14 01:04:23)

Re: AHK: запоминание последнего введённого числа и ввод числа при команде

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

#Persistent
#NoEnv
SendMode Input
SendMessage, 0x50,, 0x4090409,, A
; Задание шаблона
pattern := "/vs \d{4}"

; Переменная для хранения нажатых клавиш
input := ""

; Переменная, в которой будет храниться нужное нам число
foundNumber := 0

; Таймер для проверки ввода
SetTimer, CheckInput, 100

; Обработчик нажатий клавиш
~a::AddKey("a")
~b::AddKey("b")
~c::AddKey("c")
~d::AddKey("d")
~e::AddKey("e")
~f::AddKey("f")
~g::AddKey("g")
~h::AddKey("h")
~i::AddKey("i")
~j::AddKey("j")
~k::AddKey("k")
~l::AddKey("l")
~m::AddKey("m")
~n::AddKey("n")
~o::AddKey("o")
~p::AddKey("p")
~q::AddKey("q")
~r::AddKey("r")
~s::AddKey("s")
~t::AddKey("t")
~u::AddKey("u")
~v::AddKey("v")
~w::AddKey("w")
~x::AddKey("x")
~y::AddKey("y")
~z::AddKey("z")
~1::AddKey("1")
~2::AddKey("2")
~3::AddKey("3")
~4::AddKey("4")
~5::AddKey("5")
~6::AddKey("6")
~7::AddKey("7")
~8::AddKey("8")
~9::AddKey("9")
~0::AddKey("0")
~space::AddKey(" ")
~|::AddKey("/")

AddKey(key) {
    global input
    input .= key
}

CheckInput:
    global input, pattern
    ; Используем регулярное выражение для проверки
    if (RegExMatch(input, pattern, match)) {
			
	; Находим число, которое нам требуется
    RegExMatch(match, "\d+", match1)
	foundNumber := match1
	
    ; Очищаем переменную после нахождения совпадения
    input := ""
    }
	return