1 (изменено: grin-du, 2021-10-12 17:11:30)

Тема: AHK: Вывести значения в переменные за пределы функции

Вот такой код. Не мой, но мне нужен.


#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.

;Example for ProShow
#IfWinActive ahk_exe proshow.exe

F4::
timelineClick([A_ScriptDir . "\ProShow\ImageSearch\Blue_commet.png"], [[14,30]], [109])

timelineClick(images,imageSizes, yOffsets, hold=False)
{	
	static s_lastImage, s_TagX, s_TagY
	;преобразовать отдельные свойства в массив
	If !IsObject(images)
		images := [images]
	If !IsObject(imageSizes[1])
		imageSizes := [imageSizes]
	If !IsObject(yOffsets)
		yOffsets := [yOffsets]
		
	
	MouseGetPos, MouseX, MouseY 
	;Проверить изображение на последней позиции
	Try
	{
		searchImage := images[s_lastImage]
		Imagesearch, , , s_TagX, s_TagY, (s_TagX+imageSizes[s_lastImage][1]), (s_TagY+imageSizes[s_lastImage][2]), %searchImage%		
		if ErrorLevel > 0
			throw
	}
	catch e 
	{
		;искать везде все изображения
		for image in images
			{
			searchImage := images[image]
			ImageSearch, s_TagX, s_TagY, 0, 15, %A_ScreenWidth%, %A_ScreenHeight%, %searchImage%
			if ErrorLevel > 0
				continue
			else
				{
				;Success
				s_lastImage := image
				break
				}
		If ErrorLevel > 0
			{
			msgbox, Couldn't find reference image.
			Return
			}
			}
	}
	 a = %s_TagX%
     b = %s_TagY%
}
msgbox, %a%, %b%
return

В общем, код работает. Находит изображение. Супер! Но не могу вывести координаты найденой картинки в переменные для дальнейшего взаимодействия. Просто буду "далее плясать от этих координат." Они есть только в моменте работы функции и не отдаёт даже в msgbox. но если msgbox будет после a,b переменных (сразу), то покажет. Я новичок, и голову сломал.

Post's attachments

2021-10-12_22-00-06.png 96.89 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: Вывести значения в переменные за пределы функции

Так почитайте про функции в справке. Там поясняется, как можно выводить из функции переменные.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Вывести значения в переменные за пределы функции

UDP^ Решил вопрос глобальными переменными.