Automatisation avec interception des boutons et des clics de souris. - page 2

 
Avals >> :

Les fonctions "int GetLastKeyLP()" et "int GetLastMouseLP()" disponibles dans la même bibliothèque devraient vous aider. Et utiliser le résultat dans les fonctions int SendMessageA (int hWnd, int Msg, int wParam, int lParam); int PostMessageA (int hWnd, int Msg, int wParam, int lParam);

Mon terminal se plante tout le temps quand on l'appelle.


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


и


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


Bien que le script en cours d'exécution produise ce code lorsque j'appuie sur le bouton du testeur de stratégie dans la barre d'outils


2008.11.14 15:26:58 shablon EURUSD,Weekly : Mouse Code=513 de la fenêtre EURUSD,Weekly

 

514 qu'est-ce que c'est ?

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


Quelque chose comme ça, essaie.

 
sabluk >> :

514 qu'est-ce que c'est ?


Le code renvoyé par le script shablon.

En continuant avec le thème, comment pousser le bouton de démarrage maintenant.

Seulement si vous ne pouvez pas coder exactement comment appuyer dessus, mais je veux savoir le principe de la façon dont cette valeur est extraite.

 

Je vous ai donné un lien vers une liste de commandes.

Vous pouvez l'attraper vous-même avec un programme comme Winspector Spy.

 
HIDDEN >> :

Le code renvoyé par le script shablon.

En continuant avec le thème, comment pousser le bouton de démarrage maintenant.

Seulement si vous ne pouvez pas coder exactement comment pousser, mais que vous voulez connaître le principe de la façon dont cette valeur est extraite.

Je recommande l'utilitaire Spy++ qui fait partie de la distribution de Visual Studio.

 
Ilnur >> :

Je vous recommande l'utilitaire Spy++ qui fait partie du kit de distribution de Visual Studio.

J'ai mis le programme, je l'ai essayé et je n'ai rien compris. J'ai déjà vérifié sur les boutons avec un code connu, le programme ne l'affiche pas.

Ou je fais quelque chose de mal. Si vous avez de l'expérience avec le programme, faites une capture d'écran de la façon dont il sort le bouton de code du terminal. Je ne trouve pas le code.


Par exemple, voici les codes comment sortir avec l'aide d'un programme


33018 - passer à l'affichage "bars
33019 - passer à la vue "chandelier".
33022 - passer à la représentation "ligne".

 

cor cor coré ce script fonctionne comme ceci

#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);
}
//+------------------------------------------------------------------+
 
essayez d'autres codes de la liste dans cette branche au lieu de 33315
 
sabluk >> :
Essayez d'autres codes de la liste dans la branche au lieu de 33315.

Je ne suis pas intéressé par la vérification des codes, mais par la manière de les découvrir. Je dois appeler le testeur et appuyer sur le bouton Start du testeur, puis sur les boutons. Afin d'appuyer sur tous ces éléments, je dois comprendre comment trouver ces codes.


>> et le code que tu m'as donné, je l'ai réparé moi-même.

 

C'est juste que je ne comprends pas très bien, d'après ce fil de discussion, comment passer à une fenêtre de test, c'est-à-dire trouver le Handle de la fenêtre et ensuite exécuter la boucle. Mais le problème est que cette approche n'est pas très bonne, le terminal se plante souvent.

Raison: