windows script host error при выполнении ShellExecuteW - страница 2

 
nkaretnikov:

попробовал, но получил ошибку во время исполнения


Значит у Вас терминал 32-разрядный.

 
Ты пробовал в деините слип поставить
 
nkaretnikov:

ознакомился поглубже.

Изменил немного озвучку

и все одно, при выгрузке 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?".

A newbie's elementary guide to spawning processes
A newbie's elementary guide to spawning processes
  • Nish Nishant
  • www.codeproject.com
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...