Serviços. Eles já estão em funcionamento? - página 20

 
Алексей Тарабанов:
O serviço opera com dados (cotações) com possibilidade de corrigi-los, mas não permite gerenciar nada, em particular - janelas do terminal, que é o que precisamos. Daí, a conclusão óbvia: quando é necessário fechar uma ou outra janela, o serviço gera uma cotação obviamente impossível para esta janela e o script anexado a esta janela a fecha quando esta cotação é recebida.

No topo está um serviço completo que gerencia as janelas e o Market Watch. Mas de algum lugar, comentários como este estão vindo de algum lugar. A escrita de código ajuda.

 
fxsaber:

No topo está um serviço completo que gerencia as janelas e o Market Watch. Mas de algum lugar, comentários como este estão vindo de algum lugar. A escrita de código ajuda.

É completo, mas não funciona, e não pode funcionar.

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

É de pleno direito, mas não funciona e não pode funcionar.

Removido sua proibição em ME, experimente-o.

 
fxsaber:

Removido sua proibição em ME, experimente-o.

Quebrando?

 
E eu estou pensando. Eu gosto de pensar.
 
fxsaber:

Removido sua proibição em ME, experimente-o.

Se foi você, obrigado. Eu acho que foi Renat.

 
Haverá algo sobre o assunto?
 
Será possível executar o serviço ao iniciar o terminal, ou ele já está lá?
Executando várias cópias do mesmo serviço?
Parâmetros de passagem, ou pelo menos um para identificar cada cópia em execução.
 
Escreveu um serviço ú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!");  
}


Ao iniciar o Terminal, um aviso aparece imediatamente se a pasta do Testador estiver faltando.


Grande ajuda se o Testador em RAMDrive deve 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:

Quando você inicia o Terminal, um aviso aparece imediatamente se a pasta do Testador estiver faltando.

Muito útil de fato.

Reinicializou o computador e esqueceu o RAMDrive. Eu inicio o MT5 e ele relata imediatamente um problema.

Razão: