Re: Вызовы COM из Lua
Ещё один вопрос - в описании метода CreateObject описана возможность создания объекта только по его ProgID, но можно ли как-то создавать объекты по CLSID? Ведь большинство объектов, как я понимаю, не имеют ProgID.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
QUIK -> DDE → Lua: готовые внешние библиотеки → Вызовы COM из Lua
Ещё один вопрос - в описании метода CreateObject описана возможность создания объекта только по его ProgID, но можно ли как-то создавать объекты по CLSID? Ведь большинство объектов, как я понимаю, не имеют ProgID.
Мне необходимо из Quik передавать данные, пусть для примера из таблицы всех сделок, в стороннюю программу. По СОМ.
По-моему, вот это как раз то, что вам нужно
[url]http://bot4sale.ru/projects/utils-menu/utils-list/423-quik-ole.html[/url]
По-моему, вот это как раз то, что вам нужно
[url]http://bot4sale.ru/projects/utils-menu/utils-list/423-quik-ole.html[/url]
мне не нужен чужой чёрный ящик. мне нужна своя система. хотя бы потому, что чёрный ящик невозможно оптимизировать и подстраивать.
Добрый день.
В luacom есть функция, с помощью которой можно получить пол (М/Ж) системного диктора?
Спасибо.
В luacom есть функция, с помощью которой можно получить пол (М/Ж) системного диктора?
Выводит название текущего установленного голоса и м/ж:
local luacom = require("luacom")
vObj = luacom.CreateObject("Sapi.SpVoice")
vSpObjToken = vObj.Voice
message(tostring( vSpObjToken:GetDescription() ))
message(tostring( vSpObjToken:GetAttribute('Gender') ))
Пожалуйста.
Спасибо.
Разъясните, если не сложно, в начальном примере было просто
require "luacom"
а в свежем
local luacom = require("luacom")
как лучше или в чем разница?
И далее, при создании СОМ-объекта, из чего состоит передаваемая строка в luacom.CreateObject(...)?
Разъясните, если не сложно, в начальном примере было просто
require "luacom"
а в свежем
local luacom = require("luacom")
как лучше или в чем разница?
Можно сказать, что разницы нет. Т.е. она чисто косметическая. Делайте как вам удобнее.
И далее, при создании СОМ-объекта, из чего состоит передаваемая строка в luacom.CreateObject(...)?
Я не очень силён в COM-терминологии, но скажем так: это текстовая строка идентификатора создаваемого COM-объекта. ни из чего она не состоит. Просто в Windows зарегистрирован COM-объект с таким вот именем, с которым вы его создаёте.
это текстовая строка идентификатора создаваемого COM-объекта
в Windows зарегистрирован COM-объект с таким вот именем
а если я хочу таким способом не excel запустить, а WindowsMediaPlayer или InternetExplorer, то где эту строку идентификатора найти?
Или более общий случай, зарегистрирован СОМ-сервер в виде некого Project1.exe, в нём класс Interface1, описан метод Function1. Как этот объект создать и Function1 вызвать?
а если я хочу таким способом не excel запустить, а WindowsMediaPlayer или InternetExplorer, то где эту строку идентификатора найти?
В гугле. Проще взять любой пример на любом языке - фактически общение с COM будет мало отличаться, лишь нюансами синтаксиса.
Или более общий случай, зарегистрирован СОМ-сервер в виде некого Project1.exe, в нём класс Interface1, описан метод Function1. Как этот объект создать и Function1 вызвать?
У вас ведь есть документация от Project1.exe
Возьмите пример на любом языке использования COM-объекта из Project1.exe - и чуть скорректируйте для под синтаксис Lua.
Просто в Windows зарегистрирован COM-объект
Однако, не так всё просто. Не достаточно просто указать строку идентификатора создаваемого COM-объекта, которая записана в системном реестре в значении ProgID, там должно быть что-то еще.
Кто может подсказать, что именно пытается брать luacom из реестра и какие требования у него к интерфейсу COM-объектов?
Есть желание подключить какие-либо программы через COM-интерфейс к QUIK через Lua, но есть затруднения - не стесняемся, оставляем комментарии )
Есть желание организовать взаимодействие внешнего робота (Python) с QUIK:
Qlua-скрипты в QUIK собирают необходимые данные и публикуют их в таблице, доступной через COM-интерфейс. Внешний робот читает собранные данные, генерирует на их основе сигналы для сделок, публикует их в той же таблице. Qlua-скрипт в QUIK читает сигналы и исполняет их через QUIK. Такое возможно? Читал про AmiSharp на bot4sale.ru, но не понял, может ли он работать так.
На мой взгляд уже есть базы данных для этой задачи как транспорт обмена.
В том числе очень лёгкие, локальные БД.
К которым возможен доступ как из скриптов QLua, так и из питона.
Не пойму никак: что за мода на питон пошла?
PS
Уже писал тут как-то про такой вариант: по слову pyquik гуглятся готовые наработки по сращиванию квика с питоном. Будет, думаю, проще сразу их взять.
... по слову pyquik гуглятся готовые наработки по сращиванию квика с питоном.
Спасибо за наводку.
Qlua-скрипты в QUIK собирают необходимые данные и публикуют их в таблице, доступной через COM-интерфейс. Внешний робот читает собранные данные, генерирует на их основе сигналы для сделок, публикует их в той же таблице. Qlua-скрипт в QUIK читает сигналы и исполняет их через QUIK. Такое возможно? Читал про AmiSharp на bot4sale.ru, но не понял, может ли он работать так.
Именно это он и может.
Только чуть иначе. Амишарп отдает вам все данные, доступные в квике, вы с ними делаете все что хотите и когда решите, что нужно выставить заявку, говорите об этом амишарпу. То есть тупо пуляете ему текст необходимой транзакции.
На мой взгляд уже есть базы данных для этой задачи как транспорт обмена.
В том числе очень лёгкие, локальные БД.
К которым возможен доступ как из скриптов QLua, так и из питона.
swerg, я пробовал поиграться с sqlite из qlua. Не все так просто, как из standalone. Простые тесты проходят на ура, но как дело доходит до реальных задач, начинается головняк. Но головняк решаемый, надо только пмучиться.
я пробовал поиграться с sqlite из qlua. Не все так просто, как из standalone. Простые тесты проходят на ура, но как дело доходит до реальных задач, начинается головняк. Но головняк решаемый, надо только пмучиться.
Головные боли там, как я понимаю, с многопоточностью из main() ?
Пришлось пересобрать библиотеку на многопоточный FULLMUTEX вариант. С однопоточным постоянно возникали проблемы при закрытии скрипта, несмотря даже на жесткую работу с библиотекой из одного потока терминала (пробовал с обоими потоками), c NOMUTEX тоже не складывалось, уже не помню что.
Отразилось на скорости работы, не не фатально.
Буду благодарен , если кто нибудь поделится библиотекой luacom для QUIK 8
Наткнулся на [url]https://smart-lab.ru/vopros/624691.php[/url] собрать не получилось, мастера с++ хелп!
Заранее благодарен!
Здравствуйте. Не подскажите новичку, как с помощью luacom.dll открыть уже существующий excel файл для чтения?l
Здравствуйте. Не подскажите новичку, как с помощью luacom.dll открыть уже существующий excel файл для чтения?l
local excel = luacom.CreateObject("Excel.Application")
excel.Visible = true --у меня макрос в файле при открытии, поэтому так, по идее не нужно
local workbook = excel.Workbooks:Open("C:\\Creator\\Smile.xlsm")
local sheet1 = workbook.Sheets(1)
Kalikazandr огромное спасибо!
Не за что, открытый файл не стоит редактировать руками или из разных скриптов.
Добрый день.
Может быть подскажите с проблемой. Хочу получить из стакана данные "сумму лучшей покупки\продажи" для использования в скрипте . В getQuoteLevel2 нужных данных нет. Пробую через DDE --> эксель и хотел оттуда считывать. Но скрипт видит только сохраненный файл и онлайн не получается.
Есть ли способ онлайн считывать из эксель или возможно другой способ получения данных?
QUIK -> DDE → Lua: готовые внешние библиотеки → Вызовы COM из Lua
Форум работает на PunBB, при поддержке Informer Technologies, Inc