26 (изменено: teadrinker, 2019-03-03 18:14:29)

Re: AHK:Найти калькулятор

wisgest пишет:

если бы с Math работал цикл for in, но это не так

Но можно Object.getOwnPropertyNames(Math).

doc := ComObjCreate("htmlfile")
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>")
MsgBox, % doc.parentWindow.eval("Object.getOwnPropertyNames(Math).join('\n')")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

27

Re: AHK:Найти калькулятор

Object.getOwnPropertyNames() — не классический метод, в JScript 5.8 его нет.

28 (изменено: teadrinker, 2019-03-03 22:19:01)

Re: AHK:Найти калькулятор

Почему это Вас останавливает, мы же htmlfile используем?

doc := ComObjCreate("htmlfile")
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>")
mathMethods := doc.parentWindow.eval("Object.getOwnPropertyNames(Math).join('|')")

expr := "POW(2, 2) - Sqrt(16) + pi"

try res := doc.parentWindow.eval(expr)
catch {
   while RegExMatch(expr, "iO)(?<!Math\.)(" . mathMethods . ")", match, match ? match.Pos + match.Len + 5 : 1)
      expr := RegExReplace( expr, match[1], "Math." . RegExReplace(mathMethods, "i).*(" . match[1] . ").*", "$1"),,, match.Pos )
   
   try res := doc.parentWindow.eval(expr)
   catch
      res := "Expression is not supported"
}
MsgBox, % res

Заодно и проблема регистрозависимости решается.

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