26

Re: Вызовы COM из Lua

Ещё один вопрос - в описании метода CreateObject описана возможность создания объекта только по его ProgID, но можно ли как-то создавать объекты по CLSID? Ведь большинство объектов, как я понимаю, не имеют ProgID.

27

Re: Вызовы COM из Lua

Metallurg пишет:

Мне необходимо из Quik передавать данные, пусть для примера из таблицы всех сделок, в стороннюю программу. По СОМ.

По-моему, вот это как раз то, что вам нужно
http://bot4sale.ru/projects/utils-menu/ … k-ole.html

28

Re: Вызовы COM из Lua

korovin пишет:

По-моему, вот это как раз то, что вам нужно
http://bot4sale.ru/projects/utils-menu/ … k-ole.html

мне не нужен чужой чёрный ящик. мне нужна своя система. хотя бы потому, что чёрный ящик невозможно оптимизировать и подстраивать.

29

Re: Вызовы COM из Lua

Добрый день.
В luacom есть функция, с помощью которой можно получить пол (М/Ж) системного диктора?
Спасибо.

30

Re: Вызовы COM из Lua

kalikazandr пишет:

В luacom есть функция, с помощью которой можно получить пол (М/Ж) системного диктора?

Выводит название текущего установленного голоса и м/ж:

local luacom = require("luacom")

vObj = luacom.CreateObject("Sapi.SpVoice")
vSpObjToken = vObj.Voice

message(tostring( vSpObjToken:GetDescription() ))
message(tostring( vSpObjToken:GetAttribute('Gender') ))

Пожалуйста.

31

Re: Вызовы COM из Lua

Спасибо.

32

Re: Вызовы COM из Lua

Разъясните, если не сложно, в начальном примере было просто
require "luacom"
а в свежем
local luacom = require("luacom")
как лучше или в чем разница?
И далее, при создании СОМ-объекта, из чего состоит передаваемая строка в luacom.CreateObject(...)?

33

Re: Вызовы COM из Lua

Dimitrym пишет:

Разъясните, если не сложно, в начальном примере было просто
require "luacom"
а в свежем
local luacom = require("luacom")
как лучше или в чем разница?

Можно сказать, что разницы нет. Т.е. она чисто косметическая. Делайте как вам удобнее.

Dimitrym пишет:

И далее, при создании СОМ-объекта, из чего состоит передаваемая строка в luacom.CreateObject(...)?

Я не очень силён в COM-терминологии, но скажем так: это текстовая строка идентификатора создаваемого COM-объекта. ни из чего она не состоит. Просто в Windows зарегистрирован COM-объект с таким вот именем, с которым вы его создаёте.

34

Re: Вызовы COM из Lua

это текстовая строка идентификатора создаваемого COM-объекта

в Windows зарегистрирован COM-объект с таким вот именем

а если я хочу таким способом не excel запустить, а WindowsMediaPlayer или InternetExplorer, то где эту строку идентификатора найти?
Или более общий случай, зарегистрирован СОМ-сервер в виде некого Project1.exe, в нём класс Interface1, описан метод Function1. Как этот объект создать и Function1 вызвать?

35

Re: Вызовы COM из Lua

Dimitrym пишет:

а если я хочу таким способом не excel запустить, а WindowsMediaPlayer или InternetExplorer, то где эту строку идентификатора найти?

В гугле. Проще взять любой пример на любом языке - фактически общение с COM будет мало отличаться, лишь нюансами синтаксиса.

Dimitrym пишет:

Или более общий случай, зарегистрирован СОМ-сервер в виде некого Project1.exe, в нём класс Interface1, описан метод Function1. Как этот объект создать и Function1 вызвать?

У вас ведь есть документация от Project1.exe
Возьмите пример на любом языке использования COM-объекта из Project1.exe - и чуть скорректируйте для под синтаксис Lua.

36

Re: Вызовы COM из Lua

korovin пишет:

Просто в Windows зарегистрирован COM-объект

Однако, не так всё просто. Не достаточно просто указать строку идентификатора создаваемого COM-объекта, которая записана в системном реестре в значении ProgID, там должно быть что-то еще.
Кто может подсказать, что именно пытается брать luacom из реестра и какие требования у него к интерфейсу COM-объектов?

37

Re: Вызовы COM из Lua

swerg пишет:

Есть желание подключить какие-либо программы через COM-интерфейс к QUIK через Lua, но есть затруднения - не стесняемся, оставляем комментарии )

Есть желание организовать взаимодействие внешнего робота (Python) с QUIK:
Qlua-скрипты в QUIK собирают необходимые данные и публикуют их в таблице, доступной через COM-интерфейс. Внешний робот читает собранные данные, генерирует на их основе сигналы для сделок, публикует их в той же таблице. Qlua-скрипт в QUIK читает сигналы и исполняет их через QUIK. Такое возможно? Читал про AmiSharp на bot4sale.ru, но не понял, может ли он работать так.

38 (2019-02-07 08:49:17 отредактировано swerg)

Re: Вызовы COM из Lua

На мой взгляд уже есть базы данных для этой задачи как транспорт обмена.
В том числе очень лёгкие, локальные БД.
К которым возможен доступ как из скриптов QLua, так и из питона.

Не пойму никак: что за мода на питон пошла?

PS
Уже писал тут как-то про такой вариант: по слову pyquik гуглятся готовые наработки по сращиванию квика с питоном. Будет, думаю, проще сразу их взять.

39

Re: Вызовы COM из Lua

swerg пишет:

...  по слову pyquik гуглятся готовые наработки по сращиванию квика с питоном.

Спасибо за наводку.

40

Re: Вызовы COM из Lua

michael.s пишет:

Qlua-скрипты в QUIK собирают необходимые данные и публикуют их в таблице, доступной через COM-интерфейс. Внешний робот читает собранные данные, генерирует на их основе сигналы для сделок, публикует их в той же таблице. Qlua-скрипт в QUIK читает сигналы и исполняет их через QUIK. Такое возможно? Читал про AmiSharp на bot4sale.ru, но не понял, может ли он работать так.

Именно это он и может.

Только чуть иначе. Амишарп отдает вам все данные, доступные в квике, вы с ними делаете все что хотите и когда решите, что нужно выставить заявку, говорите об этом амишарпу. То есть тупо пуляете ему текст необходимой транзакции.

41

Re: Вызовы COM из Lua

swerg пишет:

На мой взгляд уже есть базы данных для этой задачи как транспорт обмена.
В том числе очень лёгкие, локальные БД.
К которым возможен доступ как из скриптов QLua, так и из питона.

swerg, я пробовал поиграться с sqlite из qlua.  Не все так просто, как из standalone. Простые тесты проходят на ура, но как дело доходит до реальных задач, начинается головняк. Но головняк решаемый, надо только пмучиться.

42

Re: Вызовы COM из Lua

s_mike пишет:

я пробовал поиграться с sqlite из qlua.  Не все так просто, как из standalone. Простые тесты проходят на ура, но как дело доходит до реальных задач, начинается головняк. Но головняк решаемый, надо только пмучиться.

Головные боли там, как я понимаю, с многопоточностью из main() ?

43 (2019-06-08 16:25:11 отредактировано s_mike)

Re: Вызовы COM из Lua

Пришлось пересобрать библиотеку на многопоточный FULLMUTEX вариант. С однопоточным постоянно возникали проблемы при закрытии скрипта, несмотря даже на жесткую работу с библиотекой из одного потока терминала (пробовал с обоими потоками), c NOMUTEX тоже не складывалось, уже не помню что.

Отразилось на скорости работы, не не фатально.