1

Тема: AHK: Переменные в параметрах функции

Подскажите, пожалуйста, как верно внести переменную в параметры ф-ии?


if (A_UserName= "Admin"){
pricon = D:\Soft\AHK\Scripts\icons\Premiere 2018 ACER\
}
ImageWaitClick(pricon "analyze.png", 500) ; ???
return

ImageWaitClick(pic, time:=1000){
	CoordMode, Pixel, Screen
	EndTime := A_TickCount + time
	While EndTime>A_TickCount {
	ImageSearch, picX, picY, 0, 0, A_ScreenWidth, A_ScreenHeight, % pic 
	If !ErrorLevel
		Break
	}
	If ErrorLevel
		Tippy("Image Not Found!", 2000)
	Else
		ClickAndReturn(picX,picY)
}
ClickAndReturn(x,y){
	ControlGetPos ,,,,,, ahk_id %StartCtrl%
	MouseGetPos, StartX, StartY
	MouseClick, , %x%, %y%, , 0.1
	MouseMove, StartX, StartY
}
Win10x64, AHK v1.1.25

2

Re: AHK: Переменные в параметрах функции

А какие варианты вы рассматривали?

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

3

Re: AHK: Переменные в параметрах функции

teadrinker, сейчас все не перечислю. По-всякому варьировал использование символов % и ". В сети сразу найти подходящие примеры не получилось, а документация мне сложна для понимания.

Win10x64, AHK v1.1.25

4

Re: AHK: Переменные в параметрах функции

Неужели на нашем форуме не нашлось ни одного примера использования функций?
Переменные передаются в функцию без знаков процента и без кавычек:

var := "text"
MyFunc(var)

MyFunc(str)  {
   MsgBox, % str
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5

Re: AHK: Переменные в параметрах функции

teadrinker, по запросу "переменные в функции" не нашлось. А примеры где-то наверняка есть.
Вроде заработало. Спасибо!

pricon := "D:\Soft\AHK\Scripts\icons\Premiere 2018 ACER\"
}
ImageWaitClick(pricon "analyze.png", 500)
Win10x64, AHK v1.1.25

6

Re: AHK: Переменные в параметрах функции

becauseim
Ещё вариант - передача массива.

+ открыть спойлер
; 1-й параметр отвечает за показ True/False = показывать/не показывать. 
; 2-й параметр время ожидания закрытия процессов не менее 3 секунд.
; 3-й параметр массив процессов
; На выходе список закрытых процессов разделённых "`n", на последнем нет "`n"
; Формат массива arNetApps := ["процес№1.exe","процес№1.exe","процес№1.exe","процес№99.exe"]   
fnKillWorkProc(vShow, vDelayIs,arListApps*)
{
  arKillWorkProcList  :=[[",",""]]
  cMaxArListApps :=  arListApps.MaxIndex()  ;Расчёт длины входного массива
  Loop %cMaxArListApps%
    {
          ;b := arListApps[A_Index]
      arKillWorkProcList[A_Index,1]  := arListApps[A_Index]
      arKillWorkProcList[A_Index,2]  := ""
            ;a := arKillWorkProcList[A_Index,1] ; + arKillWorkProcList[A_Index,2]
            ;MsgBox i=%A_Index% Dist= %b% Param= %a%
    }
  If (vDelayIs<3)
        vDelayIs :=3

  сMsgBoxInfo_Ok      :=0+8192+64 ;only an OK button + Task Modal + Icon Asterisk(info)
; Завершаем процессы
  titul := "Результат закрытия процессов" 
  res :=  ""
  If (vShow)
      res := "`n`n"
  i := 1
  vTF_res :=  False
  While (arKillWorkProcList[i,1])
    {
      CmdLine := arKillWorkProcList[i,1]
      If (fnCheckRestartWaitProcInter(CmdLine, vDelayIs-1))
            {
              CmdLine :=  arKillWorkProcList[i,1]
              CmdLine := "taskkill /F /IM " CmdLine
              RunCon(CmdLine, 0, Output)
              If (vShow)
                    {
                      arKillWorkProcList[i,2] := Output  "`n"
                      res  := res  arKillWorkProcList[i,2]
                    }  
                  Else
                    {
                      arKillWorkProcList[i,2] := Output
                      if (i=1)
                           res := res arKillWorkProcList[i,2]
                         Else
                           res := res "`n" arKillWorkProcList[i,2] 
                    }
              vTF_res :=  True
            }
      i++
    }
  If (vTF_res && vShow)
        MsgBox, % сMsgBoxInfo_Ok, % titul, % res, % vDelayIs
 
Return  res
}
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AHK 1.1.28.00

7

Re: AHK: Переменные в параметрах функции

Indomito, Спасибо! Но мне не ясно, что именно я могу почерпнуть из приведенного примера.

Win10x64, AHK v1.1.25

8 (изменено: ypppu, 2018-04-05 20:11:16)

Re: AHK: Переменные в параметрах функции

Русская справка / Функции (v1.0.31+) Ник переводчика: Gourmet пишет:

Поскольку вызов функции является выражением, не следует заключать в знаки процента имена переменных в списке ее параметров. И напротив, буквальные строки необходимо заключать в двойные кавычки.

http://risovach.ru/thumb/upload/200s400/2014/02/mem/sashko_42568830_orig_.jpg

9

Re: AHK: Переменные в параметрах функции

ypppu, видел, но прочитанное не удалось осуществить на практике.

Win10x64, AHK v1.1.25