День добрый!
При выполнении этого кода больше 3 раз
по окончанию работы MQL5 скрипта появляется окно
Сам vbs файл во вложении с измененным с .vbs на .txt расширением, иначе форум не принимает.
Скрипт отрабатывает корректно и фраза "Hello, World" произносится 4 раза, но вот это окно по окончании...
Не подскажете, как можно "отловить" это поведение, чтобы предотвратить появление всплывающего окна по окончанию скрипта?
Разрядность терминала?
высока вероятность, что виртуальная машина где исполняется вызываемый скрипт не успевает закончить свою работу корректно,
попробуйте сначала паузу Sleep(10 000) добавить в цикл, если поможет уменьшайте 10 000 до приемлемого значения
у меня такие "чудеса" при первом запуске .dll под .Net были, подобрал опытным путем паузу, теперь все ОК
высока вероятность, что виртуальная машина где исполняется вызываемый скрипт не успевает закончить свою работу корректно,
попробуйте сначала паузу Sleep(10 000) добавить в цикл, если поможет уменьшайте 10 000 до приемлемого значения
у меня такие "чудеса" при первом запуске .dll под .Net были, подобрал опытным путем паузу, теперь все ОК
Первым делом надо DLL Правильно вызвать. А это зависит от разрядности. Приведённый код для 32 разрядного терминала.
Разрядность терминала?
в Help\About это не указано. Как узнать разрядность терминала?
высока вероятность, что виртуальная машина где исполняется вызываемый скрипт не успевает закончить свою работу корректно,
попробуйте сначала паузу Sleep(10 000) добавить в цикл, если поможет уменьшайте 10 000 до приемлемого значения
у меня такие "чудеса" при первом запуске .dll под .Net были, подобрал опытным путем паузу, теперь все ОК
Хорошая идея! Это помогло с ошибкой при нормальном окончании скрипта. Но если принудительно выгружать скрипт из бесконечного цикла,
for(int i=0;i>-1;i=i) { ShellExecuteW(NULL,NULL,file2run,"","",0); Sleep(10000); }
то она все равно появляется.
Попробуйте так:
#import "shell32.dll" long ShellExecuteW( long hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd ); #import
https://www.hresult.info/FACILITY_ITF/0x80045006 - "The wave device is busy."
Нужно использовать WaitUntilDone - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723616(v=vs.85)
https://www.hresult.info/FACILITY_ITF/0x80045006 - "The wave device is busy."
Нужно использовать WaitUntilDone - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723616(v=vs.85)
похоже это оно самое!
Спасибо, буду пробовать
https://www.hresult.info/FACILITY_ITF/0x80045006 - "The wave device is busy."
Нужно использовать WaitUntilDone - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723616(v=vs.85)
ознакомился поглубже.
Изменил немного озвучку
dim speechobject set speechobject=createobject("sapi.spvoice") speechobject.speak "The MQL5 + VBS = Love" speechobject.WaitUntilDone (-1)
и все одно, при выгрузке MQL5 скрипта, появляется 80045006
Есть ощущение, что WaitUntilDone контролирует контекст самого vbs, а когда он рушится принудительно из MQL никакой WaitUntilDone уже не помогает.
Если это так, то помогла бы задержка перед выгрузкой MQL5 скрипта. Т.е. при
подождать пока ShellExecuteW наговорится
Такое реально?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
День добрый!
При выполнении этого кода больше 3 раз
по окончанию работы MQL5 скрипта появляется окно
Сам vbs файл во вложении с измененным с .vbs на .txt расширением, иначе форум не принимает.
Скрипт отрабатывает корректно и фраза "Hello, World" произносится 4 раза, но вот это окно по окончании...
Не подскажете, как можно "отловить" это поведение, чтобы предотвратить появление всплывающего окна по окончанию скрипта?