и все одно, при выгрузке MQL5
скрипта, появляется 80045006
Есть ощущение, что WaitUntilDone контролирует контекст самого vbs, а когда он рушится принудительно из MQL никакой WaitUntilDone уже
не помогает.
Если это так, то помогла бы задержка перед выгрузкой MQL5 скрипта. Т.е. при
подождать пока ShellExecuteW наговорится
Такое реально?
Да, всё верно. ShellExecute запускает скрипт и сразу отваливает. Нужно не только ждать отработки скрипта, но и получать дескриптор
процесса (хоста vbs) и выполнять на него WaitForSingleObject. При этом в OnDeinit нужно убивать запущенный процесс по его дескриптору.
Только придётся использовать ShellExecutEx или CreateProcess со всем гемороем заполнения структуры, иначе дескриптор не получить.
Есть статья https://www.codeproject.com/Articles/1842/A-newbie-s-elementary-guide-to-spawning-processes , там вопрос под
вывеской "Q: How do I start a program, and halt execution of my current program, till that program exits?".
I would add "on Windows" or something similar to the title to be clear this is a Windows-only information. In the question "How do I start an application under windows?" I think "windows" should be "Windows". Hi, The below mysql backup query does not run by ShellExecute, ShellExecute(NULL, "open", "C:\\Windows\\cmd.exe", "mysqldump...
попробовал, но получил ошибку во время исполнения
Значит у Вас терминал 32-разрядный.
ознакомился поглубже.
Изменил немного озвучку
и все одно, при выгрузке MQL5 скрипта, появляется 80045006
Есть ощущение, что WaitUntilDone контролирует контекст самого vbs, а когда он рушится принудительно из MQL никакой WaitUntilDone уже не помогает.
Если это так, то помогла бы задержка перед выгрузкой MQL5 скрипта. Т.е. при
подождать пока ShellExecuteW наговорится
Такое реально?
Да, всё верно. ShellExecute запускает скрипт и сразу отваливает. Нужно не только ждать отработки скрипта, но и получать дескриптор процесса (хоста vbs) и выполнять на него WaitForSingleObject. При этом в OnDeinit нужно убивать запущенный процесс по его дескриптору. Только придётся использовать ShellExecutEx или CreateProcess со всем гемороем заполнения структуры, иначе дескриптор не получить.
Есть статья https://www.codeproject.com/Articles/1842/A-newbie-s-elementary-guide-to-spawning-processes , там вопрос под вывеской "Q: How do I start a program, and halt execution of my current program, till that program exits?".