XXM ☑️
XXM ☑️ личный блог
12 января 2018, 17:57

Автологин в QUIK (на Lua).

Узнал, что продается робот на Lua, «Автологин терминала QUIK».
Продается то, что есть в открытом виде на quik2dde.ru  

Выкладываю тут: 

-- quik_login.lua
-- Автологин терминала QUIK
-- © http://qui2dde.ru/
-- Версия: 2.0
-- для Quik от версии 7.11.1.5

local w32 = require("w32")

-- логин и пароль для терминала
QUIK_LOGIN = "Uxxxxxxx"
QUIK_PASSW = "yyyyy"

function FindLoginWindow()
  hLoginWnd = w32.FindWindow("", "Идентификация пользователя")
  if hLoginWnd == 0 then
    hLoginWnd = w32.FindWindow("", "User identification")
  end
  return hLoginWnd
end

timeout = 1000  -- таймаут между попытками поиска окна логина
is_run = true

function OnStop()
  timeout = 1
  is_run = false
end

function main()
  while is_run do
    sleep(timeout)

    if isConnected() == 0 then
  
      local hLoginWnd = FindLoginWindow()
      if hLoginWnd ~= 0 then

        local n1 = w32.FindWindowEx(hLoginWnd, 0, "", "")
        local n2 = w32.FindWindowEx(hLoginWnd, n1, "", "")
        local n3 = w32.FindWindowEx(hLoginWnd, n2, "", "")
        local n4 = w32.FindWindowEx(hLoginWnd, n3, "", "")

        w32.SetWindowText(n2, QUIK_LOGIN)
        w32.SetWindowText(n3, QUIK_PASSW)


        w32.SetFocus(n4)
        w32.PostMessage(n4, w32.BM_CLICK, 0, 0)

      end 
    end

  end
end
Благодарности, как понимаю, следует адресовать swerg  
37 Комментариев
  • А. Г.
    12 января 2018, 18:03
    А как запускать скрипт на Lua при незапущенном квике? А при запущенном и однажды залогиненом скрипт не нужен, так как в самом квике есть функция автопереподключения при обрыве связи.
  • tranquility
    12 января 2018, 18:12
    Чисто из праздного любопытства: а есть скрипт, запускающий и останавливающий в указанное время другой скрипт?)
  • s_mike@rambler.ru
    12 января 2018, 19:06
    Если скрипт, который нужно останавливать, соответствующим образом написан, то можно.

    Если он написан без поддержки такой возможности, тогда корректно из другого скрипта его остановить нельзя.
  • Борис Гудылин
    12 января 2018, 19:37
    Достаточно универсальный вариант обработчика многих событий без использования sleep — основная идея.

    waitres=w32.WaitForMultipleObjects(TEVE,0,INFINITE) — ждем любого события по списку

    Автору w32.dll еще раз спасибо, сэкономил немного времени.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн