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 гуглятся готовые наработки по сращиванию квика с питоном.

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