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

 
HIDDEN >> :

Comment les menus qui s'ouvrent sur le premier bouton de la souris sont-ils interceptés ? Lorsque vous passez à un autre programme à partir du terminal, le menu disparaît et vous ne pouvez pas le rattraper. Peut-être que vous devez geler le programme d'une manière ou d'une autre ?

dans le menu contextuel, de nombreux éléments ont un code pour WM_COMMAND

 
HIDDEN >> :

Et comment intercepter les menus qui s'ouvrent par le bouton droit de la souris. En passant à un autre programme à partir du terminal, le menu disparaît et vous ne pouvez pas le rattraper. Il y a peut-être un moyen d'arrêter le programme ?

En utilisant l'utilitaire Spy++, il n'y a aucun problème.

Dans le logiciel, sélectionnez la fenêtre souhaitée dans la liste des fenêtres. Démarrez Windows Message Interceptor (Spy -> Messages...).

Configurez le filtre de messages (onglet Messages) dans la fenêtre qui s'affiche.


Vous pouvez alors effectuer diverses opérations dans le programme étudié, notamment en cliquant avec le bouton droit de la souris sur le menu et en regardant ce que l'utilitaire affiche.

 
Ilnur >> :

En utilisant l'utilitaire Spy++, il n'y a aucun problème.

Dans le logiciel, sélectionnez la fenêtre souhaitée dans la liste des fenêtres. Démarrez Windows Message Interceptor (Spy -> Messages...).

Configurez le filtre de messages dans la fenêtre qui apparaît (onglet Messages).


Après cela, vous pouvez effectuer différentes opérations dans le programme que vous étudiez, y compris le menu de clic droit et voir ce que l'utilitaire affiche.

Question pour vous, si vous avez une si grande connaissance de tout ce que vous avez écrit ici, pourquoi ne pas faire fonctionner le testeur automatiquement, l'optimiser, définir les bonnes variables, etc.

 

Comment appuyer sur la touche Entrée de manière programmatique

Il y a quelque chose qui ne marche pas.

Entrez DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

Question pour vous, si vous êtes si compétent dans tout ce que vous avez écrit ici, pourquoi ne faites-vous pas un test automatique, une optimisation, une substitution des bonnes variables, etc.

Je n'ai pas une grande connaissance de tout ce que j'ai exposé ici. Je n'ai jamais prétendu cela.


Je n'ai jamais été intéressé par le contrôle du testeur par le logiciel. C'est pourquoi je ne veux pas mettre en œuvre quelque chose comme ça.

Ce fil de discussion contenait des questions techniques sur l'utilisation des fonctions WinAPI. J'ai donc décidé de m'impliquer.

 
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA( hButtonStart, sButtonStartName,6); //считываем текст кнопки запуска тестера
      if( sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }

Nous avons besoin

string sButtonStartName = "" ;

Initialiser au moins avec la longueur 6(StringLen("Start")+1), ou de préférence avec la longueur 255 caractères.

Sinon, une fois que sButtonStartName est renvoyé par GetWindowTextA, la variable adjacente en mémoire est mise à la poubelle.

Dans mon exemple avec RestoreScripts dans la branche voisine, la valeur de la chaîne définie par #define change si elle ne le fait pas.

 
Erics >> :

Nous avons besoin

string sButtonStartName = "" ;

Initialiser au moins avec la longueur 6(StringLen("Start")+1), ou de préférence avec la longueur 255 caractères.

Sinon, une fois que sButtonStartName est renvoyé par GetWindowTextA, la variable adjacente en mémoire est mise à la poubelle.

Dans mon exemple avec RestoreScripts dans la branche suivante, la valeur de la chaîne définie par #define change, si ce n'est pas fait.

Oui, c'est correct. Je l'ai écrit rapidement et j'ai manqué ce point.

 
Ilnur >> :

Il y a eu quelques questions techniques dans ce fil de discussion concernant l'utilisation des fonctions WinAPI, j'ai donc décidé de m'impliquer.

J'ai trouvé une fenêtre intéressante. C'est presque impossible d'attraper quoi que ce soit dedans. La fenêtre s'appelle "Enregistrer sous". Pouvez-vous me dire comment appuyer sur le bouton "Enregistrer sous" ?



Si vous sélectionnez spécifiquement le bouton de sauvegarde, alors nous avons le code de bouton 00000001



Mais quand on y accède par ce code, rien ne se passe. Quelle est cette fenêtre qui n'a pas de nom ?

 
HIDDEN >> :

J'ai trouvé une fenêtre intéressante. Il est presque impossible d'y attraper quoi que ce soit. La fenêtre s'appelle "Enregistrer sous". Pouvez-vous me dire comment appuyer sur le bouton "Enregistrer sous" ?


Si vous sélectionnez spécifiquement le bouton de sauvegarde, le code du bouton est 00000001.


Mais quand on y accède par ce code, rien ne se passe. Quel genre de fenêtre est cette fenêtre sans nom.

Le dialogue est standard Shell IIANM. Et le bouton "enregistrer" est un bouton ID_OK relooké.

 
TheXpert >> :

Le dialogue est standard Shell IIANM. Et le bouton "enregistrer" est un bouton ID_OK relooké.

Faire appel au bouton OK ne sert à rien


PostMessageA(GetDlgItem(hTerminal,0x53),WM_COMMAND,IDOK,0);