Сервисы. Уже работают? - страница 20

 
Алексей Тарабанов:
Сервис оперирует данными(котировками) с возможностью их корректировки, но не позволяет управлять чем-либо; в частности - окнами терминала, а нужно именно это. Отсюда очевидный вывод: при необходимости закрытия того, или иного окна, сервис генерирует очевидно невозможную котировку для этого окна, а скрипт, прикрепленный к этому окну, закрывает его при получении этой котировки. 

Сверху лежит полноценный сервис, который управляет окнами и Обзором рынка. Но откуда-то берутся вот такие комментарии. Написание кода помогает.

 
fxsaber:

Сверху лежит полноценный сервис, который управляет окнами и Обзором рынка. Но откуда-то берутся вот такие комментарии. Написание кода помогает.

Он полноценный, но не работает, и работать не может. 

 
Алексей Тарабанов:

Он полноценный, но не работает, и работать не может. 

Снял ваш бан в ME, пробуйте.

 
fxsaber:

Снял ваш бан в ME, пробуйте.

Ломаете? 

 
А я думаю. Мне нравится думать. 
 
fxsaber:

Снял ваш бан в ME, пробуйте.

Если это Вы были, то спасибо. Думаю, это был Ренат. 

 
По теме что-нибудь будет?
 
Будет ли возможность запуска сервиса при запуске терминала, или она уже есть?
Запуск нескольких копий одного и того же сервиса?
Передача параметров, или, хотябы, одного для идентификации каждой запущенной копии.
 
Написал полезный сервис
// Сервис проверяет наличие корректной папки Tester.
#property service

input string inFolderName = "Tester";

#include <WinAPI\fileapi.mqh>
#include <WinAPI\handleapi.mqh>

#define GENERIC_WRITE                    0x40000000
#define CREATE_ALWAYS                    2
#define FILE_ATTRIBUTE_NORMAL            0x00000080
#define FILE_FLAG_OVERLAPPED             0x40000000

bool FileIsInvalid_WinAPI( const string FileName )
{
  const HANDLE hFile = CreateFileW(FileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);      
  const bool Res = (hFile != INVALID_HANDLE);
  
  if (Res)
  {
    CloseHandle(hFile);
    
    DeleteFileW(FileName);
  }
    
  return(Res);
}

void OnStart()
{
  const string FileName = TerminalInfoString(TERMINAL_PATH) + "\\" + inFolderName;

  if (!FileIsInvalid_WinAPI(FileName + "\\" + __FILE__))
    MessageBox(FileName + " is invalid!");  
}


При запуске Терминала сразу появляется предупреждение, если папка Tester отсутствует.


Здорово помогает, если Tester на RAMDrive должен быть

imdisk -a -o awe -s 3G -m Z: -p "/fs:ntfs /q /y /v:MT5Tester"

mkdir z:\Tester
mklink /j Tester z:\Tester

mkdir cache
mklink /j z:\Tester\cache cache
 
fxsaber:

При запуске Терминала сразу появляется предупреждение, если папка Tester отсутствует.

Действительно, очень удобно.

Перезагрузил комп и забыл про RAMDrive. Запускаю MT5, а он сразу сообщает о проблеме.

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