отправка предупреждения на почту. - страница 2

 

Я просмотрел полностью справочник и не нашёл такой функции.
....

О... наверно это не возможно

 
Aliaksei Karalkou #:

Я просмотрел полностью справочник и не нашёл такой функции.
....

О... наверно это не возможно

Средствами MQL терминал можно только закрыть. А вот заново запустить - нет. Для перезагрузки терминала придется использовать WinAPI (я делал только в виде dll):

  1. Определить полный путь к текущему терминалу (достаточно средств MQL).
  2. Получить ID процесса.
  3. Записать ID процесса и путь в файл.
  4. Запустить собственное приложение, которое впоследствии и выполнит запуск терминала.
  5. Закрыть терминал (функция TerminalClose()).
  6. Запущенное ранее приложение дожидается завершения процесса терминала (ID процесса был записан в файл).
  7. По завершении процесса терминала загружается тот терминал, путь к которому также был ранее записан в файл.
  8. Приложение завершает свою работу.
 
Ihor Herasko #:

Средствами MQL терминал можно только закрыть. А вот заново запустить - нет. Для перезагрузки терминала придется использовать WinAPI (я делал только в виде dll):

  1. Определить полный путь к текущему терминалу (достаточно средств MQL).
  2. Получить ID процесса.
  3. Записать ID процесса и путь в файл.
  4. Запустить собственное приложение, которое впоследствии и выполнит запуск терминала.
  5. Закрыть терминал (функция TerminalClose()).
  6. Запущенное ранее приложение дожидается завершения процесса терминала (ID процесса был записан в файл).
  7. По завершении процесса терминала загружается тот терминал, путь к которому также был ранее записан в файл.
  8. Приложение завершает свою работу.

можно проще

@echo off

:restart

terminal64.exe /portable

echo Restart

goto restart

дополнить условием выхода :-)
 
Maxim Kuznetsov #:

можно проще

@echo off

:restart

terminal64.exe /portable

echo Restart

goto restart

дополнить условием выхода :-)

Для себя - конечно проще ))

А вот если советник нужно передать другому пользователю, то попутно придется убедить его запускать терминал через специальный bat-файл, а не просто передать ему советник.

 
Ihor Herasko #:

Для себя - конечно проще ))

А вот если советник нужно передать другому пользователю, то попутно придется убедить его запускать терминал через специальный bat-файл, а не просто передать ему советник.

положа руку на сердце - терминал и сам умеет рестартовать/перезагружаться. Что он собственно и делает при обновлениях.

Так что вопрос ТС "как перезапустить терминал", можно решить например подсунув пустой zip (или оригинальный) в %APPDIR% или поставив нужную, но неизвестную, галочку в реестр

только вот практического сценария где это может понадобиться не могу придумать :-) Зачем советнику рестартовать целый терминал ?

 
Maxim Kuznetsov #:

положа руку на сердце - терминал и сам умеет рестартовать/перезагружаться. Что он собственно и делает при обновлениях.

Так что вопрос ТС "как перезапустить терминал", можно решить например подсунув пустой zip (или оригинальный) в %APPDIR% или поставив нужную, но неизвестную, галочку в реестр

только вот практического сценария где это может понадобиться не могу придумать :-) Зачем советнику рестартовать целый терминал ?

Повторюсь: если для себя, то способов достаточно много. А вот для решения "из коробки" придется делать все "по учебнику".

Ну а для чего нужно перезапускать терминал, написано в первом посте ветки.

 
Ihor Herasko #:

Средствами MQL терминал можно только закрыть. А вот заново запустить - нет. Для перезагрузки терминала придется использовать WinAPI (я делал только в виде dll):

  1. Определить полный путь к текущему терминалу (достаточно средств MQL).
  2. Получить ID процесса.
  3. Записать ID процесса и путь в файл.
  4. Запустить собственное приложение, которое впоследствии и выполнит запуск терминала.
  5. Закрыть терминал (функция TerminalClose()).
  6. Запущенное ранее приложение дожидается завершения процесса терминала (ID процесса был записан в файл).
  7. По завершении процесса терминала загружается тот терминал, путь к которому также был ранее записан в файл.
  8. Приложение завершает свою работу.

Без ID запроса перезапуск.bat в принципе так и сделал, но столкнулся с проблемой: если из терминала не достать пароль, то и потом его никак не вписать при подключении. Не могу найти этой функции

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