1 (изменено: belyankin12, 2016-12-21 19:45:54)

Тема: AHK: Вставить данные из буфера обмена в input

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

1. Я использую команду input для регистрации введенного мной текста, но бывают ситуации, когда мне нужно вставить этот текст с буфера обмена. При нажатии CTRL + V переменная остается пустой. Использую я скрипт в полноэкранном приложении, потому вызвать через правую кнопку мыши меню для нажатия "Вставить" не выйдет. Как мне решить эту проблему, либо какую команду мне использовать как альтернативу (нужна такая команда, которая работает и с вводом от клавиатуры и с вводом с буфера обмена, желательно чтобы в одной строчке можно было и вводить с клавиатуры и вставлять, но это уже не столь важно)

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

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

2 (изменено: stealzy, 2016-12-20 17:51:55)

Re: AHK: Вставить данные из буфера обмена в input

Для этого есть InputBox.
Если же вы хотите незаметно перехватывать ввод в программу, то ловите Ctrl+V:

Loop {
	Input a, V, {Enter}
	if a
		MsgBox % a
}

~^vk56:: ; Ctrl+V (~ — не перехватывать)
	Sleep 20 ; задержка чтобы вставилось в программу
	MsgBox % Clipboard
	Return

3

Re: AHK: Вставить данные из буфера обмена в input

Нет, это не то что мне нужно. Мне нужно из Клипбоарда вывести в строку его содержимое так, чтобы input воспринял это как будто я физически ввёл эти данные. Вот пример кода что я использую:

showDialog("1", "{FFFAFA}Укажите квадрат", "{FFFAFA}От А-1 до Я-24", "Ок")
input, text, V, {Enter}

Команда showDialog это команда из UDF - вызывает диалоговое окно внутри игры GTA SAMP. В этом окне есть строка с курсором куда вводится текст, но само окно не обладает способностью перехватывать текст (оно просто для красоты так сказать), регистрирует текст именно вторая строчка - input. Мне нужно чтобы нажав CTRL + V переменная text не была пустая, а отобразила содержимое буфера обмена (к примеру я хочу написать "Hello world" но слово "world" у меня уже скопировано. Я ввожу "hello", нажимаю CTRL + V а text остается равным "Hello").

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

4

Re: AHK: Вставить данные из буфера обмена в input

UDF тут вообще не причем, я просто показал вам его для того чтобы вы поняли зачем мне нужна команда input именно. Если я использую inputbox в полноэкранном приложении, оно свернется, не так ли? Меня это не устраивает.

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

5 (изменено: stealzy, 2016-12-21 01:54:50)

Re: AHK: Вставить данные из буфера обмена в input

Возьмите мой код за основу.
Вы ввели или вставили что-то, скрипт получил это в переменную.
Если вы хотите вводить и вставлять одновременно, и при этом не теряя фокус с игры (InputBox или свое GUI не годятся), придется подумать как обрабатывать поступающий ввод и вставки, а затем склеить их вместе.

Loop {
	Input inputText, V, {Enter}
	If (ErrorLevel = "NewInput")
		str := str inputText Clipboard
	else if (str OR inputText) {
		MsgBox % str inputText
		str := ""
	}
}

~^vk56::Input

6

Re: AHK: Вставить данные из буфера обмена в input

Спасибо за помощь, использую это.

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

7

Re: AHK: Вставить данные из буфера обмена в input

belyankin12, А что если через память игры?



showDialog("1", "{FFFAFA}Укажите квадрат", "{FFFAFA}От А-1 до Я-24", "Ок")
KeyWait, enter, D
sleep 150
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
RegExMatch(chatInput, "(.*)", text)
msgbox, %text1%
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

8

Re: AHK: Вставить данные из буфера обмена в input

При этом введенный мой квадрат отправится в чат? Больше я не могу понять как игра запоминает переменную, учитывая что showdialog просто визуальное меню, без функций, без ничего.

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