Automação com interceptação por botão e clique do mouse. - página 2

 
Avals >> :

As funções "int GetLastKeyLP()" e "int GetLastMouseLP()" disponíveis na mesma biblioteca devem ajudar. E utilizar o resultado em funções int SendMessageA (int hWnd, int Msg, int wParam, int lParam); int PostMessageA (int hWnd, int Msg, int wParam, int lParam);

Meu terminal trava o tempo todo quando é chamado.


int hwnd = WindowHandle(Symbol(),Period());
SendMessageA(hwnd, WM_COMMAND, 514, 0);


и


int hwnd = WindowHandle(Symbol(),Period());
PostMessageA(hwnd, WM_COMMAND, 514, 0);


Embora o script em execução produza este código quando pressiono o botão de teste de estratégia na barra de ferramentas


2008.11.14 15:26:58 shablon EURUSD,Semanal: Mouse Code=513 da janela EURUSD,Semanal

 

514 o que é isso?

#import "user32.dll"
   int GetParent (int hWnd);
   int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import
//+------------------------------------------------------------------+

   int hwnd = WindowHandle(Symbol(), NULL);

   while (!IsStopped())   {
     hwnd = GetParent( hwnd);
     if ( hwnd==0) break;
     int hwnd_parent = hwnd;   }

   PostMessageA( hwnd_parent, WM_COMMAND,33315,0)


Algo como isto, experimente.

 
sabluk >> :

514 o que é isso?


O código devolvido pelo roteiro do shablon.

Continuando com o tema, como apertar o botão de partida agora.

Somente se você não puder codificar exatamente como pressioná-lo, mas eu quero saber o princípio de como este valor é puxado para fora.

 

Eu lhe dei um link para uma lista de comandos

Você mesmo pode pegá-lo com um programa como o Winspector Spy

 
HIDDEN >> :

O código devolvido pelo roteiro do shablon.

Continuando com o tema, como apertar o botão de partida agora.

Somente se você não puder codificar exatamente como empurrar, mas quiser saber o princípio de como este valor é puxado para fora.

Recomendo o utilitário Spy++ que faz parte da distribuição do Visual Studio.

 
Ilnur >> :

Eu recomendo o utilitário Spy++ que faz parte do kit de distribuição do Visual Studio.

Eu coloquei o programa, experimentei e não entendi nada. Já verifiquei os botões com um código conhecido, o programa não o exibe.

Ou estou fazendo algo errado. Se você tiver experiência com o programa, faça uma captura de tela de como ele emite o botão de código a partir do terminal. Não consigo encontrar o código.


Por exemplo, estes são os códigos de como sair com a ajuda de um programa


33018 - mudar para a visão "barras
33019 - mudar para a visão "candelabro".
33022 - mudar para representação de "linha

 

corrigido o roteiro funciona assim

#import "user32.dll"
   int GetParent (int hWnd);
   int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import
#define WM_COMMAND       0x0111
//+------------------------------------------------------------------+
int start()
{
   int hwnd = WindowHandle(Symbol(), NULL);

   while (!IsStopped())   {
     hwnd = GetParent( hwnd);
     if ( hwnd==0) break;
     int hwnd_parent = hwnd;   }

   PostMessageA( hwnd_parent, WM_COMMAND,33315,0);
   return(0);
}
//+------------------------------------------------------------------+
 
tente outros códigos da lista naquele ramo em vez de 33315
 
sabluk >> :
Tente outros códigos da lista no ramo em vez de 33315

Não estou interessado em verificar os códigos, mas como descobrir os códigos. Preciso chamar o testador e pressionar o botão Start no testador e depois pressionar os botões. Para pressionar tudo isso, preciso entender como descobrir esses códigos.


>> e o código que você me deu, eu mesmo o consertei.

 

É que não está muito claro para mim, a partir dessa linha, como mudar para uma janela de teste, ou seja, descobrir o cabo da janela e, em seguida, executar o loop. Mas o problema é que esta abordagem não é muito boa, o terminal muitas vezes cai
.

Razão: