Как запустить скрипт Python из MQL4?

 

Хочу запускать звуки в фоновом режиме, в тестере стратегий MT-4. Так как там стандартная функция PlaySound() там не работает, хотел реализовать задачу вызовом скрипта Python.
Делаю как то так:

#define SW_SHOWNORMAL       1

#import "shell32.dll"

   int ShellExecuteW(int hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);

#import



//--- Ontick() или OnInit().

string logPath = TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files\\voice.py";  

int sew = ShellExecuteW(NULL, NULL, logPath, NULL, NULL, SW_SHOWNORMAL);


Скрипт вроде запускается, но сразу закрывается и звук не воспроизводит. Хотя если вручную запускать скрипт  voice.py - то все отрабатывает как надо. 

Код Python:

from playsound import playsound

playsound("Privet.wav")


У кого-нибудь есть мысли по этому поводу?

 
Yuriy Vins:

 Хотя если вручную запускать скрипт  voice.py - то все отрабатывает как надо. 

Просто любопытно, вручную это как?

У меня то, что вы написали просто открылся код питона в блокноте.


Судя по всему 

ShellExecuteW(int hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);

Открывает файл программой по умолчанию.

 
Aleksandr Slavskii #:

Просто любопытно, вручную это как?

У меня то, что вы написали просто открылся код питона в блокноте.


Судя по всему 

Открывает файл программой по умолчанию.

Вручную - это я имел ввиду двойным кликом мыши по скрипту voice.py, или же когда запускаю этот файл в самом редакторе кода (кнопкой Run Module).

 

Программа по умолчанию стоит сам Python. 


 
Yuriy Vins #:

Вручную - это я имел ввиду двойным кликом мыши по скрипту voice.py, или же когда запускаю этот файл в самом редакторе кода (кнопкой Run Module).

Двойным кликом у меня он открывается в блокноте)))

М, да. С меня подсказчик так себе.

 

Даже так скажу, при запуске советника - скрипт voice.py запускается, потом на долю секунды появляется окно cmd и сразу закрывается, я даже не успеваю прочитать что там написано.

И звук не появляется.

 
Yuriy Vins #:

Даже так скажу, при запуске советника - скрипт voice.py запускается, потом на долю секунды появляется окно cmd и сразу закрывается, я даже не успеваю прочитать что там написано.

И звук не появляется.

Я в таких случаях беру телефон и снимаю слоу мо)))

Там наверное нужно вызывать интерпретатор и ему в качестве параметра передавать путь к файлику?

 
Yevhenii Levchenko #:

Я в таких случаях беру телефон и снимаю слоу мо)))

Там наверное нужно вызывать интерпретатор и ему в качестве параметра передавать путь к файлику?

Помогло твое "слоу мо". И таким образом успел прочитать ошибку. Был не найден путь к звуковому файлу в самом питоновском скрипте. Хотя, когда я запускал питоновский скрипт без MQL4 - все работало как надо. Странно конечно..

В общем - прописал полный путь к своему звуку в питоновском скрипте и все заработало!
Проблема решена, теперь я могу вызывать Python-скрипт из MQL-4 (и не только Python-скрипт разумеется). И теперь тестер стратегий будет звучать. )

 

Кстати окно CMD я скрыл - прописав здесь 0 в параметрах вместо 1. Чтобы не мешало.
Пример: ShellExecuteW(NULL, NULL, logPath, NULL, NULL, 0);

Никаких процессов (после отработки скрипта) в диспетчере задач не остается.

Причина обращения: