Automazione con intercettazione di pulsanti e clic del mouse. - pagina 2

 
Avals >> :

Le funzioni "int GetLastKeyLP()" e "int GetLastMouseLP()" disponibili nella stessa libreria dovrebbero aiutare. E usate il risultato nelle funzioni int SendMessageA (int hWnd, int Msg, int wParam, int lParam); int PostMessageA (int hWnd, int Msg, int wParam, int lParam);

Il mio terminale si blocca sempre quando viene chiamato.


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


и


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


Anche se lo script in esecuzione produce questo codice quando premo il pulsante strategy tester nella barra degli strumenti


2008.11.14 15:26:58 shablon EURUSD,Weekly: Mouse Code=513 dalla finestra EURUSD,Weekly

 

514 che cos'è?

#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)


Qualcosa del genere, provate.

 
sabluk >> :

514 che cos'è?


Il codice restituito dallo script shablon.

Continuando con il tema, come premere il pulsante di avvio ora.

Solo se non si può codificare esattamente come premere, ma voglio sapere il principio di come questo valore viene tirato fuori.

 

Ti ho dato un link a una lista di comandi

Potete prenderlo voi stessi con un programma come Winspector Spy

 
HIDDEN >> :

Il codice restituito dallo script shablon.

Continuando con il tema, come premere il pulsante di avvio ora.

Solo se non potete codificare esattamente come spingere, ma volete sapere il principio di come questo valore viene tirato fuori.

Raccomando l'utilità Spy++ che fa parte della distribuzione di Visual Studio.

 
Ilnur >> :

Vi consiglio l'utilità Spy++ che fa parte del kit di distribuzione di Visual Studio.

Ho messo il programma, l'ho provato e non ho capito niente. Ho già controllato sui pulsanti con un codice noto, il programma non lo visualizza.

O sto facendo qualcosa di sbagliato. Se avete esperienza con il programma, fate uno screenshot di come emette il pulsante del codice dal terminale. Non riesco a trovare il codice.


Per esempio questi sono i codici come uscire con l'aiuto di un programma


33018 - passare alla vista "barre
33019 - passare alla vista "candela".
33022 - passare alla rappresentazione "linea"

 

corretto lo script funziona così

#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);
}
//+------------------------------------------------------------------+
 
provare altri codici dalla lista in quel ramo invece di 33315
 
sabluk >> :
Prova altri codici dalla lista nel ramo invece di 33315

Non mi interessa controllare i codici, ma come scoprire i codici. Devo chiamare il tester e premere il pulsante Start sul tester e poi premere i pulsanti. E per premere tutto questo ho bisogno di capire come trovare questi codici.


>> e il codice che mi hai dato, l'ho risolto da solo.

 

È solo che non mi è molto chiaro da quel thread come passare a una finestra tester, cioè scoprire l'Handle della finestra e poi eseguire il ciclo. Ma il problema è che questo approccio non è molto buono, il terminale si blocca spesso.