
Надоело вручную вводить пароль в торговой системе Квика (я недавно решил набрать скилла в фондовом рынке). Как обычно, гугл дает много ресурсов, но все с неработающими у меня решениями. Возможно, они для старых версий, у меня 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