Скачать MetaTrader 5

функция ShellExecuteW

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
igortrade
36
igortrade  

Добрый день помогите пожалуйста, уже где только не смотрел и что только не пробовал..  (работаю на Windows 7, mql4, MT4 build 646)

Задача следующая есть конфигурационный ini файл: optimise.ini в котором задано запустить тестер и провести оптимизацию. Если из командной строки (пуск->выполнить ) пишем:

G:\торговые платформы\MT4_new\terminal.exe "G:\торговые платформы\MT4_new\optimise.ini" 

тогда запускается терминал и запускаются настройки, которые заданы в ini файле. В настройках ini файла происходит автоматизация советника за данный промежуток времени. Теперь хочу запустить тестер при помощи функции  ShellExecuteW:

ShellExecuteW(0,"Open","terminal.exe","optimise.ini","G:\торговые платформы\MT4_new",3); 

При этом терминал запускается, а запуск оптимизации, который прописан в ini файле не происходит. Помогите пожалуйста разобраться как правильно набрать эту функцию.

Vadim Zhunko
5226
Vadim Zhunko  

Потому что 4-й параметр:

If lpFile specifies an executable file, this parameter is a pointer to a null-terminated string that specifies the parameters to be passed to the application. The format of this string is determined by the verb that is to be invoked. If lpFile specifies a document file, lpParameters should be NULL.

Если lpFile указывает на исполняемый файл, этот параметр-указатель на оканчивающуюся нулем строку, которая задает параметры, которые будут переданы приложению. Формат этой строки определяется глаголом, который должен быть вызван. Если lpFile задает файл документа, lpParameters должен быть NULL. 

igortrade
36
igortrade  
Zhunko:

Потому что 4-й параметр:

 

Согласно материалам из статьи https://www.mql5.com/ru/articles/1467 именно определение ShellExecuteA(0, "Open", "terminal.exe", optimise.ini, "D:\Program Files\Forex Best Trade Station", 3); работало. В новом build 646 возникает много заморочек и не работает ShellExecuteW(0,"Open","terminal.exe","optimise.ini","G:\торговые платформы\MT4_new",3) . вообщем, тестер запускается, а автоматизация нет..

Пробовал в четвертом параметре где стоит lpParameters поставить NULL, но непонятно теперь как именно прописать lpFile с параметром  ini файла.. Как написано "lpFile указывает на исполняемый файл, этот параметр-указатель на оканчивающуюся нулем строку, которая задает параметры, которые будут переданы приложению".. но как это сделать в коде?
Vadim Zhunko
5226
Vadim Zhunko  
Не знаю. Надо у Метаквотов спросить.
Slava
Модератор
6971
Slava  

Проблему решили.

1. При написании обратного слэша его надо удваивать

ShellExecuteW(0,"Open","terminal.exe","optimise.ini","G:\\торговые платформы\\MT4_new",3); 


2.  Можно (и лучше) использовать полную спецификацию пути к конфигурационному файлу. В этом случае необходимо путь ограничивать кавычками, так как он содержит пробелы при том что является частью cmdline

ShellExecuteW(0,"Open","terminal.exe","\"G:\\торговые платформы\\MT4_new\\optimise.ini\"","G:\\торговые платформы\\MT4_new",3); 


3. В следующем билде в журнале терминала будет сообщение "Started with configuration file 'bla-bla-bla'" в случае его использования.

Igor Durkin
5360
Igor Durkin  

Доброго дня,

А как открыть страничку в браузере?  Раньше открывалась через  ShellExecuteА, например :

string ip = "https://docs.mql4.com/mql4changes";

ShellExecuteA( 0 , 0 , ip , "" , 0 , 5 ); 

o_o
Модератор
24191
o_o  
igorad:

Доброго дня,

А как открыть страничку в браузере?  Раньше открывалась через  ShellExecuteА, например :


теперь надо юникод - ShellExecuteW
Igor Durkin
5360
Igor Durkin  
Спасибо, это понятно. Только как оно будет выглядеть, т.к. с теми же параметрами не работает.
Slava
Модератор
6971
Slava  
igorad:
Спасибо, это понятно. Только как оно будет выглядеть, т.к. с теми же параметрами не работает.

ShellExecuteW(0, NULL, ip, "", NULL, 5);
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий