Новая версия платформы MetaTrader 4 build 1370 - страница 4

 
Я уже выше спрашивал об изменениях прошлого билда. Тайна, покрытая мраком.
 
Aleksey Vyazmikin #:

Так наверное поставили в план, не думаю, что всё быстро реализуется в коммерческом проекте.

Ух тяжело на исходной форме подвинуть мышкой поле. Нужно в планы вбивать и в долгосрочку откладывать. Не понимаю я этого.

 
Vitaly Murlenko #:

Ух тяжело на исходной форме подвинуть мышкой поле. Нужно в планы вбивать и в долгосрочку откладывать. Не понимаю я этого.

Видимо, Вы давно не работали на окладе :)))

 
Поддерживаю просьбу @Vitaliy Kuznetsov о публикации списка изменений. Подобно тому, как это сделано для МТ5.
 
На новой версии 1370 не запускается терминал, если его переименовать. На предыдущей версии 1369 (а также на всех других за последние несколько лет) всё прекрасно запускалось и работало!
В чём дело? Зачем эта возможность была убрана? Пробовал на Win7 и Win10 с тем же результатом.
Эксперимент:
1. Устанавливаем терминал стандартным образом из установочного файла. 
2. Запускаем terminal.exe
3. Всё прекрасно запускается и работает
4. Закрываем терминал
5. Переименовываем в terminal2.exe
6. Запускаем terminal2.exe
7. Терминал НЕ запускается.

В чём проблема? Что делать нужно, чтобы заставить запускаться переименованный файл terminal2.exe?
Я использую несколько терминалов. Переименование terminal.exe мне требуется исключительно для мониторинга работы терминалов. 
Программа nncron отслеживает наличие файла с заданным именем в памяти системы и в случае его отсутствия просто запускает его вновь.
Теперь эта возможность исчезла.
 
Иван #:
На новой версии 1370 не запускается терминал, если его переименовать. На предыдущей версии 1369 (а также на всех других за последние несколько лет) всё прекрасно запускалось и работало!
В чём дело? Зачем эта возможность была убрана? Пробовал на Win7 и Win10 с тем же результатом.
Эксперимент:
1. Устанавливаем терминал стандартным образом из установочного файла. 
2. Запускаем terminal.exe
3. Всё прекрасно запускается и работает
4. Закрываем терминал
5. Переименовываем в terminal2.exe
6. Запускаем terminal2.exe
7. Терминал НЕ запускается.

В чём проблема? Что делать нужно, чтобы заставить запускаться переименованный файл terminal2.exe?
Я использую несколько терминалов. Переименование terminal.exe мне требуется исключительно для мониторинга работы терминалов. 
Программа nncron отслеживает наличие файла с заданным именем в памяти системы и в случае его отсутствия просто запускает его вновь.
Теперь эта возможность исчезла.

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

 
Valeriy Yastremskiy #:

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

Существует множество решений конечно же. И я какое-то конечно же придумаю и в таком случае. Но просто ЗАЧЕМ ломать то, что РАБОТАЛО много лет? В чём плюсы для разработчиков самого терминала?

 

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

Обновление функционала платформы MetaTrader 4 было остановлено много лет назад и сейчас мы выпускаем только патчи по креш-логам.

 
MetaQuotes #:

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

Обновление функционала платформы MetaTrader 4 было остановлено много лет назад и сейчас мы выпускаем только патчи по креш-логам.

А есть какое то решение идентифицировать процессы разных терминалов, кроме как по пути?

 
Valeriy Yastremskiy #:

А есть какое то решение идентифицировать процессы разных терминалов, кроме как по пути?

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

  static string GetClassName( const HANDLE Handle )
  {
    string Str = NULL;

    short Buffer[MAX_PATH] = {0};

    if (user32::GetClassNameW(Handle, Buffer, ::ArraySize(Buffer)))
      Str = ::ShortArrayToString(Buffer);

    return(Str);
  }

  static int GetTerminalHandles( HANDLE &Handles[] )
  {
    ::ArrayFree(Handles);

    for (HANDLE Handle = user32::GetTopWindow(NULL); Handle; Handle = user32::GetWindow(Handle, GW_HWNDNEXT))
      if (MTTESTER::GetClassName(Handle) == "MetaQuotes::MetaTrader::5.00")
        Handles[::ArrayResize(Handles, ::ArraySize(Handles) + 1) - 1] = Handle;

    return(::ArraySize(Handles));
  }
Причина обращения: