Automatización con interceptación de botones y clics del ratón. - página 2

 
Avals >> :

Las funciones "int GetLastKeyLP()" y "int GetLastMouseLP()" disponibles en la misma biblioteca deberían ayudar. Y utilizar el resultado en las funciones int SendMessageA (int hWnd, int Msg, int wParam, int lParam); int PostMessageA (int hWnd, int Msg, int wParam, int lParam);

Mi terminal se bloquea todo el tiempo cuando se le llama.


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


и


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


Aunque el script que se ejecuta produce este código cuando pulso el botón de comprobación de la estrategia en la barra de herramientas


2008.11.14 15:26:58 shablon EURUSD,Semanal: Mouse Code=513 de la ventana EURUSD,Semanal

 

514 ¿Qué es?

#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 así, pruébalo.

 
sabluk >> :

514 ¿Qué es?


El código devuelto por el script shablon.

Siguiendo con el tema, cómo pulsar ahora el botón de arranque.

Sólo si no se puede codificar exactamente cómo presionarlo, pero quiero saber el principio de cómo se saca este valor.

 

Te he dado un enlace a una lista de comandos

Puedes detectarlo tú mismo con un programa como Winspector Spy

 
HIDDEN >> :

El código devuelto por el script shablon.

Siguiendo con el tema, cómo pulsar ahora el botón de arranque.

Sólo si usted no puede codificar exactamente cómo empujar, pero quiere saber el principio de cómo se saca este valor.

Recomiendo la utilidad Spy++ que forma parte de la distribución de Visual Studio.

 
Ilnur >> :

Te recomiendo la utilidad Spy++ que forma parte del kit de distribución de Visual Studio.

Puse el programa, lo probé y no entendí nada. Ya he comprobado en los botones con un código conocido, el programa no lo muestra.

O estoy haciendo algo mal. Si tienes experiencia con el programa, haz una captura de pantalla de cómo sale el botón de código del terminal. No puedo encontrar el código.


Por ejemplo, estos son los códigos de cómo salir con la ayuda de un programa


33018 - cambiar a la vista de "barras"
33019 - cambiar a la vista "candelabro".
33022 - cambiar a la representación de "línea"

 

corregido el script funciona así

#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);
}
//+------------------------------------------------------------------+
 
pruebe con otros códigos de la lista en esa rama en lugar del 33315
 
sabluk >> :
Pruebe otros códigos de la lista de la rama en lugar del 33315

No me interesa comprobar los códigos, sino cómo averiguar los códigos. Tengo que llamar al probador y pulsar el botón de inicio en el probador y luego pulsar los botones. Para pulsar todo esto, necesito entender cómo averiguar estos códigos.


>> y el código que me diste, lo arreglé yo mismo.

 

Es que de ese hilo no me queda muy claro cómo cambiar a una ventana de prueba. es decir, averiguar el Mango de la ventana y luego ejecutar el bucle. Pero el problema es que este enfoque no es muy bueno, el terminal se bloquea a menudo.