Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2448

 
Tretyakov Rostyslav #:

Прописать в советнике создание файла, если его нет, а если файл уже есть - ExpertRemove();

Aleksei Stepanenko #:

Время запуска терминала можно узнать, это не решает проблему? Пример на другом языке, можно попытаться переложить на MQL:

Это прописывается в общую папку, но время проблему не решает. Нужен какой-то идентификатор терминала

 
Vitaly Muzichenko #:

Это прописывается в общую папку, но время проблему не решает. Нужен какой-то идентификатор терминала

Тебе нужно чтобы советник запускался на том терминале, на котором был запущен первый раз?

А все последующих копиях не запускался?

 
Vitaly Muzichenko #:

Нужен какой-то идентификатор терминала


#import "user32.dll"
int GetAncestor(int hWnd,int gaFlags); 

//хендл главного окна программы
int eHandleMain=GetAncestor((int)ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE),2);
 

Система такова

Запускаем терминал, данные отправляются на удалённый сервер и там прописывается идентификатор терминала единожды.

Через время проверяем этот идентификатор, и если он не совпадает - блокируем работу программы. То есть, он должен быть постоянным и не меняться в терминале

Это работает по материнке, но если это разные машины.

Задача получить ID-терминала, чтобы блокировать последующие копии терминалов с одной машины, потому что материнка уже не подходит - она одна.

 
Vitaly Muzichenko #:

Система такова

Запускаем терминал, данные отправляются на удалённый сервер и там прописывается идентификатор терминала единожды.

Через время проверяем этот идентификатор, и если он не совпадает - блокируем работу программы. То есть, он должен быть постоянным и не меняться в терминале

Это работает по материнке, но если это разные машины.

Задача получить ID-терминала, чтобы блокировать последующие копии терминалов с одной машины, потому что материнка уже не подходит - она одна.

Так я изначально писал получить директорию терминала TerminalInfoString(TERMINAL_PATH) как идентификатор

 
Tretyakov Rostyslav #:

Так я изначально писал получить директорию терминала TerminalInfoString(TERMINAL_PATH) как идентификатор

А разные виртуалки (клоны) на одной машине? Пути совпадают.

 
JRandomTrader #:

А разные виртуалки (клоны) на одной машине? Пути совпадают.

Вот в чём вся загвоздка.

 
Vitaly Muzichenko #:

Вот в чём вся загвоздка.

В самом корне терминала сделай свою папку с уникальным именем.в коде пропиши путь через эту папку для файла ,который будет считываться для допуска к работе.Через Dll на стороннем сервере зафиксируй, чтобы папка создавалась только один раз.Чтобы обнулить привязку,обнули условия из сервера Dll,имена должны быть сгенерированы и фиксироваться динамически, перед каждым обнулением
 
Dz Mak #:
В самом корне терминала сделай свою папку с уникальным именем.в коде пропиши путь через эту папку для файла ,который будет считываться для допуска к работе.Через Dll на стороннем сервере зафиксируй, чтобы папка создавалась только один раз.Чтобы обнулить привязку,обнули условия из сервера Dll

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

 
Vitaly Muzichenko #:

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

А файл в папке мы просто так делаем?Туда суём параметры машины и сравниваем