Dienstleistungen. Sind sie schon einsatzbereit? - Seite 20

 
Алексей Тарабанов:
Der Dienst arbeitet mit Daten (Anführungszeichen) mit der Möglichkeit, sie zu korrigieren, aber er erlaubt nicht, irgendetwas zu verwalten, insbesondere die Fenster des Terminals, was wir brauchen. Daraus ergibt sich die offensichtliche Schlussfolgerung: Wenn es notwendig ist, das eine oder andere Fenster zu schließen, erzeugt der Dienst ein offensichtlich unmögliches Angebot für dieses Fenster, und das Skript, das mit diesem Fenster verbunden ist, schließt es, wenn dieses Angebot empfangen wird.

An der Spitze steht ein vollwertiger Dienst, der die Fenster und Market Watch verwaltet. Aber von irgendwoher kommen Kommentare wie dieser. Code schreiben hilft.

 
fxsaber:

An der Spitze steht ein vollwertiger Dienst, der die Fenster und Market Watch verwaltet. Aber von irgendwoher kommen Kommentare wie dieser. Code schreiben hilft.

Es ist vollständig, aber es funktioniert nicht, und es kann nicht funktionieren.

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

Sie ist vollwertig, aber sie funktioniert nicht und kann nicht funktionieren.

Ihr Bann in ME wurde aufgehoben, probieren Sie es aus.

 
fxsaber:

Ihr Bann in ME wurde aufgehoben, probieren Sie es aus.

Breaking?

 
Und ich denke nach. Ich denke gerne nach.
 
fxsaber:

Ihr Bann in ME wurde aufgehoben, probieren Sie es aus.

Wenn Sie das waren, danke ich Ihnen. Ich glaube, es war Renat.

 
Wird es etwas zu diesem Thema geben?
 
Ist es möglich, den Dienst beim Starten des Terminals auszuführen, oder ist er bereits vorhanden?
Laufen mehrere Kopien desselben Dienstes?
Übergabe von Parametern oder zumindest eines zur Identifizierung jeder laufenden Kopie.
 
Schrieb einen nützlichen Dienst
// Сервис проверяет наличие корректной папки 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!");  
}


Beim Starten des Terminals erscheint sofort eine Warnung, wenn der Ordner Tester fehlt.


Große Hilfe, wenn der Tester auf RAMDrive sein soll

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:

Wenn Sie das Terminal starten, erscheint sofort eine Warnung, wenn der Ordner Tester fehlt.

Wirklich sehr praktisch.

Ich habe den Computer neu gestartet und das RAMDrive vergessen. Ich starte MT5 und es meldet sofort ein Problem.

Grund der Beschwerde: