Как отправить команду в QUIK из приложения C#

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 6, среднее: 5,00 из 5)
Загрузка...

Qlua-csharp-connector-dllВ статье "Обмен данными между DLL (C/C++) и приложением C#" показан простой пример отправки сообщений из DLL в приложение C#, а QUIK(Lua) просто запускает и останавливает эту отправку. Для отправки команд из приложения C# в QUIK лучше использовать примерно следующую конструкцию:

QLua-функция main()
DLL-функция (C/C++) GetCommand()
Код C#
Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Как отправить команду в QUIK из приложения C#: 30 комментариев

  1. Здравствуйте!
    Периодически вылетает ошибка: "Необработанное исключение по адресу
    0x000007F9EC5C9D19 (ntdll.dll) в info.exe: 0xC0000374: Куча была повреждена
    (параметры: 0x000007F9EC61E5F0)". Часто если в коде lua указано: "sleep(1)".
    Ошибка чтения в точке "lua_pushstring(L, (char*)(pb))".
    Как её избежать?

    1
    2
    3
    4
    
        ...
                     lua_pushstring(L, (char*)(pb));
    		 for (int i = 0; i < 256; i++)pb[i] = '\0'; 
                     ...
    1
    2
    3
    4
    5
    
             ...
             QluaCSharpConnector.SendQuote(Quote);
             local CommandStr = tostring(QluaCSharpConnector.GetCommand());
             sleep(1);
             ...

    Microsoft Visual Studio Enterprise 2015
    Версия 14.0.24720.00 Update 1
    Microsoft .NET Framework
    Версия 4.6.01055

  2. Простите, если не в том разделе вопрос задаю, более подходящего не сыскал. Пишу небольшую программку на С++, думаю она быстрее меня будет реагировать на некоторые события в Квике. И организовалась сложность, которую не смог победить. Вполне нормально получаю Хендлы всех нужных мне окон, Но Хендл окна диалога Ввода заявки, которое вызывается по F2, получить не получается. Может подскажете, может есть известный способ, как этот Хендл получить? Спасибо.

  3. И все же вынесу этот вопрос в отдельный. Дмитрий, почему вы библиотеки пишете на C, а оконное приложение на C#? Это просто личное предпочтение, или на то есть объективные причины?

  4. Я понимаю, что сейчас задам очень глупый вопрос, но не судите строго, я не разбираюсь в технологии и толком не могу объяснить разницу между подключаемой библиотекой и оконным приложением. Пусть это будет вопрос от новичков и для новичков.

    Итак, имея ссылку на объект L мы можем очень просто из кода DLL-библиотеки на C++ вызывать любые функции LUA. Но если мы хотим это делать из оконного приложения на C++ или C# (не вижу принципиальной разницы. Или я не прав?) то мы должны использовать уже гораздо более сложные схемы с передачей строки команды, MMF, распарсивания этой команды и т.д. А можно ли создать оконное приложение внутри DLL-библиотеки? И тогда не нужны никакие MMF. Вот GUI-библиотеки, реализованные как DLL и написанные на C, создают же окна и формы. Почему мы так не можем, типа при подключении DLL к LUA-скрипту создается оконное приложение?