Запуск сторонних приложений через мт4

 

Добрый день!

Понимаю, тема не нова, но думаю, актуальна для многих, потому решил создать отдельную тему. Я новичок в освоении MQL4. Помогите  разобраться с вопросом запуска стороннего файла через mql4 (при совпадении определенных условии выполнить файл bat). Вроде перепробовал все возможные варианты найденные через "поиск" на Форуме. Пробовал через WinExec, терминал не реагирует, isdllsallowed вообще молчит. Разрешение dll в mt4 разрешено. Были попытки запуска через ShellExcute, не пошло (на компе установлена Windows 10). Подскажите, в чем ошибка. Как пример использовал подобный скрипт(не запускается):


//+------------------------------------------------------------------+
//|                                                     Shutdown.mq4 |
//|                                                Copyright © 2010. |
//|                                                http://mql4you.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010."
#property link      "http://mql4you.ru"
#property show_confirm
#import "kernel32.dll"
int WinExec(string lpCmdLine,int uCmdShow);
//+------------------------------------------------------------------+
int start()
{if(IsDllsAllowed()==false)
   {Alert("Вызов из библиотек (DLL) невозможен. Скрипт не может выполняться.");
    return(0);}
 WinExec("shutdown.exe -s -f",1);
return(0);}
//+------------------------------------------------------------------+

 
MrRutts:

Добрый день!

Понимаю, тема не нова, но думаю, актуальна для многих, потому решил создать отдельную тему. Я новичок в освоении MQL4. Помогите  разобраться с вопросом запуска стороннего файла через mql4 (при совпадении определенных условии выполнить файл bat). Вроде перепробовал все возможные варианты найденные через "поиск" на Форуме. Пробовал через WinExec, терминал не реагирует, isdllsallowed вообще молчит. Разрешение dll в mt4 разрешено. Были попытки запуска через ShellExcute, не пошло (на компе установлена Windows 10). Подскажите, в чем ошибка. Как пример использовал подобный скрипт(не запускается):



WinExec осталась лишь для совместимости с 16-битными Windows. Прошлый век, короче. Но в принципе и ее можно использовать, передав строку в ANSI-кодировке. Вы же сейчас передали строку в юникоде.

#import "kernel32.dll"
   int WinExec(uchar &lpCmdLine[], int uCmdShow);
#import

void OnStart()
{
   if (!IsDllsAllowed())
   {
      Alert("Вызов из библиотек (DLL) невозможен. Скрипт не может выполняться.");
      return;
   }
   
   string strCmdLine = "notepad.exe";
   uchar ucharCmdLine[];
   
   StringToCharArray(strCmdLine, ucharCmdLine);
   WinExec(ucharCmdLine, 1);
}
 
ShellExecuteW
 
Ihor Herasko:

WinExec осталась лишь для совместимости с 16-битными Windows. Прошлый век, короче. Но в принципе и ее можно использовать, передав строку в ANSI-кодировке. Вы же сейчас передали строку в юникоде.


Благодарю за отклик!

Пробовал вставить Ваш код в MetaEditor, но к сожалению, при компиляции notepad не запускается. Код работает напрямую при компиляции c MetaEditora? Или необходимо внести его в скрипты MT4 расширением ex4? 

Возможно, задаю глупые вопросы, но пока учусь!

 
Комбинатор:
ShellExecuteW

Спасибо за отклик и подсказку! Этот метод я тоже пробовал, но в связи с пробелами в знаниях языка, либо неверно оформляю, либо косячно компилирую.

Не могли бы Вы представить любой рабочий пример применения библиотеки с запуском стороннего приложения?

 
MrRutts:
В поиске достаточно рабочих примеров.
 
MrRutts:

Благодарю за отклик!

Пробовал вставить Ваш код в MetaEditor, но к сожалению, при компиляции notepad не запускается. Код работает напрямую при компиляции c MetaEditora? Или необходимо внести его в скрипты MT4 расширением ex4? 

Возможно, задаю глупые вопросы, но пока учусь!


Компиляция - это лишь... компиляция )) Просто перевод текста с "человеческого" MQL в "нечеловеческие" машкоды. Для запуска программы нужно прикрепить скрипт к любому чарту (см. окно Навигатор в терминале, не в MetaEditor).

 
Ihor Herasko:

Компиляция - это лишь... компиляция )) Просто перевод текста с "человеческого" MQL в "нечеловеческие" машкоды. Для запуска программы нужно прикрепить скрипт к любому чарту (см. окно Навигатор в терминале, не в MetaEditor).


Спасибо за подсказку!

Все это время я компилировал вместо реального запуска скрипта!!!!