Как в коде MQL4 при сигнале Индикатора запустить .mp3 файл в Windows Media Player?

 

Здравствуйте, уважаемые трейдеры и программисты!

Прошу помочь со вставкой кода, который бы открывал .mp3 - файл, когда появится сигнал в моем индикаторе. Сигнал вставить смогу сам. Поэтому выкладываю только код, где у меня работает все не так как надо:

 

  if (sound || alert) {
// сигнал на селл (или бай)
  if (условие на бай) {
  .....

if (alert) Alert(ls_44);
if (sound) PlaySound(File_Sound);

 Так вот, загвоздка №1:

Хочу вместо PlaySound вставить код, чтобы при сигнале, запускался mp3-плеер и проигрывалась музыка, а Алерт сообщал бы что именно послужило причиной сигнала.

Загвоздка №2 (неважная при решении вопроса №1) - при размещении в коде И алерта И саунда (если включить их оба), то проигрывается только алерт (перебивает саунд(долгий wav-файл)).

 Итоговая просьба: прошу помочь прикрепить мне к индикатору вызов WinMediaPlayer с исполнение в отдельном окне mp3-файла, посколько мой знакомй прогер этого не умеет, а здесь на форуме я много раз искал (или сложное и очень замудреное с доп.программированием на С++ или не подходит). Очень прошу помочь! Надеюсь, программисты МКЛ4 досточно обновили этот язык, чтобы уметь что-то большее, чем просто стандартные "звенелки".

 
e-partner:

Здравствуйте, уважаемые трейдеры и программисты!


Загвоздка №2 (неважная при решении вопроса №1) - при размещении в коде И алерта И саунда (если включить их оба), то проигрывается только алерт (перебивает саунд(долгий wav-файл)).


Этот вопрос решается элементарной последовательностью

  if (sound || alert) {
// сигнал на селл (или бай)
  if (условие на бай) {
  .....

if (sound) PlaySound(File_Sound);
if (alert) Alert(ls_44);
} 
Если этого не достаточно, ждите других советов.
 
e-partner:

Здравствуйте, уважаемые трейдеры и программисты!

Прошу помочь со вставкой кода, который бы открывал .mp3 - файл, когда появится сигнал в моем индикаторе. Сигнал вставить смогу сам. Поэтому выкладываю только код, где у меня работает все не так как надо:

 

  if (sound || alert) {
// сигнал на селл (или бай)
  if (условие на бай) {
  .....

if (alert) Alert(ls_44);
if (sound) PlaySound(File_Sound);

 Так вот, загвоздка №1:

Хочу вместо PlaySound вставить код, чтобы при сигнале, запускался mp3-плеер и проигрывалась музыка, а Алерт сообщал бы что именно послужило причиной сигнала.

Загвоздка №2 (неважная при решении вопроса №1) - при размещении в коде И алерта И саунда (если включить их оба), то проигрывается только алерт (перебивает саунд(долгий wav-файл)).

 Итоговая просьба: прошу помочь прикрепить мне к индикатору вызов WinMediaPlayer с исполнение в отдельном окне mp3-файла, посколько мой знакомй прогер этого не умеет, а здесь на форуме я много раз искал (или сложное и очень замудреное с доп.программированием на С++ или не подходит). Очень прошу помочь! Надеюсь, программисты МКЛ4 досточно обновили этот язык, чтобы уметь что-то большее, чем просто стандартные "звенелки".

 

 

 


WinApi вроде еще не отменили
 

здесь запуск плеера 

Правда одному уже не помогло, но может вам поможет, кто его знает. 

 
Integer:

здесь запуск плеера 

Правда одному уже не помогло, но может вам поможет, кто его знает. 

 

 Огромное спасибо за код! Прошу прощения, раньше руки не доходили!(((

Мне это уже помогает!  Вот... полюбуйтесь: :-) :-) ...(читайте ниже еще).

 

//+------------------------------------------------------------------+
//|                                                    e-partner.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright   ""
#property link        ""
#property strict

#import "shell32.dll"
   int ShellExecuteA(int hwnd,uchar & lpOperation[],uchar & lpFile[],uchar & lpParameters[],uchar & lpDirectory[],int nShowCmd);
#import //закрытие импорта

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_levelcolor DimGray
#property indicator_color1 DodgerBlue
#property indicator_level1 20.0
input int InpCCIPeriod=14; // CCI Period
extern bool alert = true;
string MediaFile;
//+-------------------------------------------------+
//| Init                                            |
//+-------------------------------------------------+
int OnInit(void) {
   uchar _lpFile[];
   uchar _lpOperation[];
   uchar _lpParameters[];
   uchar _lpDirectory[];   
   string lpOperation="open";
   string lpFile="C:\\Program Files\\Windows Media Player\\wmplayer.exe";
   string lpParameters=MediaFile;
   string lpDirectory="";
   StringToCharArray(lpOperation,_lpOperation);
   StringToCharArray(lpFile,_lpFile);
   StringToCharArray(lpParameters,_lpParameters);
   StringToCharArray(lpDirectory,_lpDirectory);
   ShellExecuteA(0,_lpOperation,_lpFile,_lpParameters,_lpDirectory,1);
return 0;
}
//+-------------------------------------------------+
//| OnCalculate                                     |
//+-------------------------------------------------+
void OnCalculate(void) {
   PlayInWinPlayer("C:\\Windows\\Media\\tada.wav");  }           // вот его ни в какую не хочет понимать, открывать, просто ВМП работает.

int OnCalculate(const int rates_total,                      // это и ниже до скобки вставил просто так, зато стало работать от чего то! =DDD
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{  return (0);}

void PlayInWinPlayer(string MediaFile)
{  uchar _lpFile[];
   uchar _lpOperation[];
   uchar _lpParameters[];
   uchar _lpDirectory[];   
   string lpOperation="open";
   string lpFile="C:\\Program Files\\Windows Media Player\\wmplayer.exe";
   string lpParameters=MediaFile;
   string lpDirectory="";
   StringToCharArray(lpOperation,_lpOperation);
   StringToCharArray(lpFile,_lpFile);
   StringToCharArray(lpParameters,_lpParameters);
   StringToCharArray(lpDirectory,_lpDirectory);
   ShellExecuteA(0,_lpOperation,_lpFile,_lpParameters,_lpDirectory,1);
   PlayInWinPlayer("C:\\Windows\\Media\\tada.wav");                  // это не работает: что есть что нет
}

 

Помогите, пожалуйста, его довести до ума!

При включении опций индюка он запускает-таки (УРАА!!!) МП3 плеер Windows Media Player. Только файл никак не запускает!((( Есть мелкие ошибки, я добивался такого, что вообще ни одной ошибочки и коммента не было. Вот бы также!

Прошу очень!).

теги: как вставить windows media player в индикатор mql4, как вставить проигрыватель mp3-файлов в индикатор MT4.   (чтобы тема индексировалась ;) )