Servicios. ¿Ya están en marcha? - página 20

 
Алексей Тарабанов:
El servicio opera con los datos (cotizaciones) con posibilidad de corregirlos, pero no permite gestionar nada, en particular - las ventanas del terminal, que es lo que necesitamos. De ahí, la conclusión obvia: cuando es necesario cerrar una u otra ventana, el servicio genera una cita obviamente imposible para esta ventana y el script adjunto a esta ventana la cierra cuando se recibe esta cita.

En laparte superior hay un servicio completo que gestiona las ventanas y la vigilancia del mercado. Pero de algún sitio salen comentarios como este. Escribir código ayuda.

 
fxsaber:

En laparte superior hay un servicio completo que gestiona las ventanas y la vigilancia del mercado. Pero de algún sitio salen comentarios como este. Escribir código ayuda.

Está completo, pero no funciona, y no puede funcionar.

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

Es de pleno derecho, pero no funciona, ni puede funcionar.

Se ha eliminado el baneo en ME, pruébalo.

 
fxsaber:

Se ha eliminado el baneo en ME, pruébalo.

¿Rompiendo?

 
Y estoy pensando. Me gusta pensar.
 
fxsaber:

Se ha eliminado el baneo en ME, pruébalo.

Si eras tú, gracias. Creo que fue Renat.

 
¿Habrá algo sobre el tema?
 
¿Será posible ejecutar el servicio al iniciar el terminal, o ya está ahí?
¿Ejecutar varias copias del mismo servicio?
Pasar parámetros, o al menos uno para identificar cada copia en ejecución.
 
Escribió un servicio útil
// Сервис проверяет наличие корректной папки 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!");  
}


Al iniciar el Terminal, aparece inmediatamente una advertencia si falta la carpeta Tester.


Gran ayuda si el probador en RAMDrive debe ser

imdisk -a -o awe -s 3 G -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:

Al iniciar el Terminal, aparece inmediatamente una advertencia si falta la carpeta Tester.

Muy útil, sin duda.

Reinicié el ordenador y me olvidé de RAMDrive. Arranco MT5 e inmediatamente me informa de un problema.

Razón de la queja: