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-объектов?