26 (2020-04-15 10:21:40 отредактировано GREEN_X5)

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

Xantrax пишет:

Вопрос: может быть у вас с библиотекой что-то не так?

У нас всё так, всё работает уже много лет )
Не нашел как тут прицепить файл к сообщению, хотел готовый w32 дать на пробу.

27

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

GREEN_X5 пишет:

У нас всё так, всё работает уже много лет )

Товарищи, простите меня, я вчера бился бился, ничего не работало, а сегодня все чудным образом заработало.(( Потрите мой флуд и мои сообщения.

28

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

Добрый день, а с QUIK 8.3.2.4
автозапуск работает?

29

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

kenkokan пишет:

Добрый день, а с QUIK 8.3.2.4
автозапуск работает?

Да. Прямо сейчас у меня работает.

30 (2020-04-16 10:41:11 отредактировано Xantrax)

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

kenkokan пишет:

Добрый день, а с QUIK 8.3.2.4
автозапуск работает?

Да. Только теперь другой вопрос, при обрыве связи:
1) сам нажимаешь кнопку разъединения;
2) отключаешь вай-фай на время, а потом снова подключаешь.
сам терминал не показывает окно логина, не пытается восстановить соединение (галочка в настройках стоит как в первом топике).

И еще вопрос:
Вот эта функция в скрипте

[+]Spoiler
function OnStop()
  timeout = 1
  is_run = false
end

она где применяется?

31

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

Товарищи, помогите пожалуйста.
После автологина появляется сообщение о том, что сообщение успешно установлено.[url=https://ibb.co/BBYQ7n5]https://i.ibb.co/BBYQ7n5/image.png[/url]
Указатель на окно получил, а дальше как? Попробовал также как и с автологином, получить указатели на элементы окна функцией FindWindowEx, но толи кол-ко элементов не то, толи к ним нельзя так обращаться. Как закрыть окно?)

32

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

отключить в настройках его появление проще всего.

33 (2020-04-22 06:46:54 отредактировано SergD)

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

Люди добрые, подскажите пожалуйста, сделал все как написано, винда 64х битная
Запускаю макрос луа, выдает ошибку

error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':
    Не найдена указанная процедура.

Сам файл там лежит, взял именно 64х битную
Запустил с правами администратора, на всякий случай

Раньше пользовался на винде 32х битной, все работало шикарно, вот теперь при переходе на квик 8.5 какие-то непонятнки (

34

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

SergD пишет:

Запускаю макрос луа, выдает ошибку
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':
    Не найдена указанная процедура.

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

35

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

Xantrax пишет:
SergD пишет:

Запускаю макрос луа, выдает ошибку
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':
    Не найдена указанная процедура.

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

А что пробовать? Как вчера не работало, так и сегодня ) Все вроде по инструкции делаю, и файл она видит, но вот не работает

36

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

Попробовал создать скрипт из одной строки: local w32 = require("w32")
Все равно та же ошибка
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':
    Не найдена указанная процедура.

37

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

SergD пишет:


Все равно та же ошибка
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':

Библиотека точно лежит в одной папке со скриптом?

38

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

toxa пишет:

отключить в настройках его появление проще всего.

Не подскажете, где это в настройках. Я подозреваю, что в "Система - Настройки - Основные настройки - Сообщения - Оповещения", снять галочку Показывать уведомления. Но... Не затроент ли изменение этого пункта какие-нибудь другие оповещения?

39

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

Xantrax пишет:
SergD пишет:


Все равно та же ошибка
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':

Библиотека точно лежит в одной папке со скриптом?

Да точно, я ее и в папку скрипта клал,  в папку квика,  в windows\system32

Все равно одно и тоже пишет

40

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

Xantrax пишет:
SergD пишет:


Все равно та же ошибка
error loading module 'w32' from file 'M:\Sergey\Program\QuikFinam-bid\w32.dll':

Библиотека точно лежит в одной папке со скриптом?

Причем точно такая же ситуация повторяется на ноутбуке с виндой 64х битной. Сначала думал может первая ситуация была проблемная из-за сервера 2016.

Квик 8.5, файл луа лежит lua53.dll
Помогите пожалуйста разобраться, откуда ноги растут , не понимаю

41

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

SergD пишет:

Квик 8.5, файл луа лежит lua53.dll
Помогите пожалуйста разобраться, откуда ноги растут , не понимаю

из квика 8.5. w32.dll у вас, скорее всего, для lua 5.1. попробуйте с предыдущим квиком. квик 8.5 очень сырой и глючный.

42 (2020-05-01 20:33:07 отредактировано mihalich81)

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

toxa пишет:
SergD пишет:

Квик 8.5, файл луа лежит lua53.dll
Помогите пожалуйста разобраться, откуда ноги растут , не понимаю

из квика 8.5. w32.dll у вас, скорее всего, для lua 5.1. попробуйте с предыдущим квиком. квик 8.5 очень сырой и глючный.

В QUIK 8.5 уже LUA 5.3. w32.dll для 5.1 работать не будет.

43

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

Используя опыт авторов автологина на сайте quik2dde ru и bot4sale ru/download-categories/2012-06-13-15-10-36/item/avtologin-dlya-quik.html

доработал макрос autologin таким образом:

сделал определение, какая версия квика, так что работает как на 7й версии (32х, использует старую библиотеку w32) так и на 8й (х64, использует новую библиотеку bot4sale64.dll)

1) прежде чем нажать на "ОК" он делает небольшую паузу, чтобы можно было выбрать другой сервер
2) после подключения, выдает сообщение, к какому серверу подключился (к сожалению, работает только на версии 7 с библиотекой w32, т.к. в новой библиотеке bot4sale64.dll не нашел функции w32.GetWindowTe xt, буду признателен, если добавите такую функцию в Вашу библиотеку)
3) выдает сообщения, если связь потеряна
4) в папке квика создает текстовый файл _time_when_conn ect в который записывает время подключения (у меня это используется для других макросов)

Выложил архив здесь denegin ru/files/autologin.rar
Можно использовать в любых целях без упоминания авторства

44

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

SergD пишет:

Квик 8.5, файл луа лежит lua53.dll
Помогите пожалуйста разобраться, откуда ноги растут , не понимаю

mihalich81 пишет:

В QUIK 8.5 уже LUA 5.3. w32.dll для 5.1 работать не будет.

Сборка библиотеки w32 обновлена, теперь она совместима и с QUIK 8.5/
Ссылки в первом сообщении темы

45 (2020-06-15 21:23:46 отредактировано 266157921)

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

Здравствуйте, подскажите,у меня почемуто скрипт в поле логина сначала логин подставляет а потом ту даже и пароль. Соотвестственно не могу соедениться по нему
Версия 8.6

46

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

266157921 пишет:

Здравствуйте, подскажите,у меня почемуто скрипт в поле логина сначала логин подставляет а потом ту даже и пароль. Соотвестственно не могу соедениться по нему
Версия 8.6

Вроде все работает.
Значит в самом скрипте в этих строках где-то ошибка:

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)

47 (2020-06-15 22:40:02 отредактировано 266157921)

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

Xantrax пишет:
266157921 пишет:

Здравствуйте, подскажите,у меня почемуто скрипт в поле логина сначала логин подставляет а потом ту даже и пароль. Соотвестственно не могу соедениться по нему
Версия 8.6

Вроде все работает.
Значит в самом скрипте в этих строках где-то ошибка:

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)

я не разбираюсь в этом, вот как у меня:

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 hLogin = w32.FindWindowEx(hLoginWnd, 0, "", "")
        local nPassw = w32.FindWindowEx(hLoginWnd, hLogin, "", "")
        local nBtnOk = w32.FindWindowEx(hLoginWnd, 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

48

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

266157921 пишет:

я не разбираюсь в этом, вот как у меня:

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 hLogin = w32.FindWindowEx(hLoginWnd, 0, "", "")
        local nPassw = w32.FindWindowEx(hLoginWnd, hLogin, "", "")
        local nBtnOk = w32.FindWindowEx(hLoginWnd, 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

По ссылке в первом сообщении нерабочий скрипт. Нужно поменять функцию main

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

49 (2020-09-07 22:04:15 отредактировано BlaZed)

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

Долгое время уже пользуюсь скриптом от swerg'а
Немного модифицировал его под себя и добавил функционала, думаю другим тоже может пригодится.
Добавил поддержку соединения, учитывающую выходные и праздничные дни и время работы биржи, так как встроенные возможности QUIK не устраивали.
Ну и "причесал" код, как мне это нравится.

-- Автологин терминала QUIK
-- (c) http://quik2dde.ru/
-- Версия: 3.0 (BlaZed Edition)
local w32 = require("w32")
QUIK_LOGIN="ЛОГИН"      -- Логин
QUIK_PASSW="ПАРОЛЬ"     -- Пароль
START_HOUR=9            -- Время начала поддержки соединения, часы
START_MIN=50            -- Время начала поддержки соединения, минуты
TIMEOUT=1000            -- Таймаут между проверками соединения, мс
is_run = true
function main()
  while is_run do
    if(isConnected()==0)then
      if(WorkTime()==true)then
        QuikConnect() -- Нажать кнопку "Установить соединение с информационным сервером"
      end
      QuikLogin() -- Ввести Логин/Пароль и нажать кнопку "Вход"
    end
    sleep(TIMEOUT)
  end
end
function OnStop()
  is_run=false
  return 100
end
function QuikConnect() -- Нажать кнопку "Установить соединение с информационным сервером"
  local hWnd=w32.FindWindow("InfoClass","")
  if hWnd~=0 then
    w32.PostMessage(hWnd,w32.WM_COMMAND,100,0)
  end
end
function QuikLogin() -- Ввести Логин/Пароль и нажать кнопку "Вход"
  local hWnd=w32.FindWindow("", "Идентификация пользователя")
  if hWnd==0 then hWnd=w32.FindWindow("", "User identification") end
  if hWnd~=0 then
    local hServe=w32.FindWindowEx(hWnd,0,"","")
    local hLogin=w32.FindWindowEx(hWnd,hServe,"","")
    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
function WorkTime() -- Возвращает флаг рабочего времени
  local GMT3=3*60*60   -- Часовой пояс биржи GMT+3 (Москва)
  local dt=os.date("!*t",os.time()+GMT3)
  -- Суббота и воскресенье - нерабочие дни
  if(dt.wday==1)or(dt.wday==7)then return false end
  -- Нерабочие дни смотрим в торговом календаре на московской бирже
  if(dt.year==2020)and(dt.month==01)and(dt.day==01)then return false end -- 1 января 2020
  if(dt.year==2020)and(dt.month==01)and(dt.day==02)then return false end -- 2 января 2020
  if(dt.year==2020)and(dt.month==01)and(dt.day==07)then return false end -- 7 января 2020
  if(dt.year==2020)and(dt.month==02)and(dt.day==24)then return false end -- 24 февраля 2020
  if(dt.year==2020)and(dt.month==03)and(dt.day==09)then return false end -- 9 марта 2020
  if(dt.year==2020)and(dt.month==05)and(dt.day==11)then return false end -- 11 мая 2020
  if(dt.year==2020)and(dt.month==06)and(dt.day==24)then return false end -- 24 июня 2020
  if(dt.year==2020)and(dt.month==07)and(dt.day==01)then return false end -- 1 июля 2020
  if(dt.year==2020)and(dt.month==11)and(dt.day==04)then return false end -- 4 ноября 2020
  -- Отсекаем время "до" начала поддержки соединения
  if(dt.hour<START_HOUR)or((dt.hour==START_HOUR)and(dt.min<START_MIN))then return false end
  return true
end

На данный момент скрипт работает на QUIK 8.8.4.3

50

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

calendar=
{
 [1] = true, [7] = true,
 [20200101] = true,
}
function WorkTime() -- Возвращает флаг рабочего времени
  local GMT3=3*60*60   -- Часовой пояс биржи GMT+3 (Москва)
  local dt=os.date("!*t",os.time()+GMT3)

  if calendar[dt.wday] then return false end

  local d = tonumber(os.date("%Y%m%d", os.time(dt)))
  if calendar[d] then return false end

  -- Отсекаем время "до" начала поддержки соединения
  if(dt.hour<START_HOUR)or((dt.hour==START_HOUR)and(dt.min<START_MIN))then return false end
  return true
end