Автологин в системе QUIK

Надоело вручную вводить пароль в торговой системе Квика (я недавно решил набрать скилла в фондовом рынке). Как обычно, гугл дает много ресурсов, но все с неработающими у меня решениями. Возможно, они для старых версий, у меня 8.5 VTB и 8.6 Junior x64 Windows 10. Пришлось разбираться самому.

Итак, с Гита https://github.com/swerg/qlua-w32 взял исходники, в VisualStudio 2017 скомпилировал библиотеку w32.dll (можно конечно загрузить уже готовую, но мне просто интересно было), положил ее как полагается в корневой каталог  QUIK.

Затем скачал отсюда https://quik2dde.ru/viewtopic.php?id=80 скрипт quik_autologin.lua.
Так как у меня не заработал, то пришлось править.
Исходный код привожу ниже.

-- Автологин терминала QUIK, оригинал
-- (c) http://qui2dde.ru/ https://quik2dde.ru/viewtopic.php?id=80
-- Версия: 1.0
-- с моими правками</code>

local w32 = require("w32")

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

function FindLoginWindow()
hLoginWnd = w32.FindWindow("", "Идентификация пользователя") -- 8.5
if hLoginWnd == 0 then
hLoginWnd = w32.FindWindow("", "Вход в систему") -- это в Юниоре 8.6
end
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 hWnd = FindLoginWindow()
if hWnd ~= 0 then

local hLoginWnd = w32.FindWindowEx(hWnd, 0, "", "")
local hLogin = w32.FindWindowEx(hWnd, hLoginWnd, "", "")
local nPassw = w32.FindWindowEx(hWnd, hLogin, "", "")
local nBtnOk = w32.FindWindowEx(hWnd, nPassw, "", "")

w32.SetWindowText(hLogin, QUIK_LOGIN)
w32.SetWindowText(nPassw, QUIK_PASSW)

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

end
end

end
end

 

 

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.