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

 
HIDDEN >> :

¿Cómo se interceptan los menús que se abren con el primer botón del ratón? Cuando cambias a otro programa desde el terminal, el menú desaparece y no puedes cogerlo. ¿Tal vez haya que congelar el programa de alguna manera?

desde el menú contextual muchos elementos tienen un código para WM_COMMAND

 
HIDDEN >> :

Y cómo interceptar los menús que se abren con el botón derecho del ratón. Al cambiar a otro programa desde el terminal, el menú desaparece y no se puede coger. ¿Puede haber alguna forma de detener el programa?

Cuando se utiliza la utilidad Spy++ no hay ningún problema.

En el software, seleccione la ventana deseada de la lista de ventanas. Inicie el Interceptor de Mensajes de Windows (Espía -> Mensajes...).

Configure el filtro de mensajes (pestaña Mensajes) en la ventana que aparece.


A continuación, puede realizar diversas operaciones en el programa investigado, como hacer clic con el botón derecho del ratón en el menú y ver lo que muestra la utilidad.

 
Ilnur >> :

Cuando se utiliza la utilidad Spy++ no hay ningún problema.

En el software, seleccione la ventana deseada de la lista de ventanas. Inicie el Interceptor de Mensajes de Windows (Espía -> Mensajes...).

Configure el filtro de mensajes en la ventana que aparece (pestaña Mensajes).


Después de eso puedes hacer diferentes operaciones en el programa que estás investigando, incluyendo el menú del botón derecho y ver lo que muestra la utilidad.

Una pregunta para ti, si tienes tantos conocimientos en todo lo que has escrito aquí por qué no haces que el probador se ejecute automáticamente, lo optimizas, pones las variables adecuadas, etc.

 

Cómo pulsar la tecla Enter de forma programada

Algo en esto no funciona.

Entre en DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

Una pregunta para ti, si eres tan entendido en todo lo que has escrito aquí, por qué no haces una ejecución automática del probador, optimización, sustitución de las variables adecuadas, etc.

No tengo grandes conocimientos en todo lo que he expuesto aquí. Nunca he afirmado eso.


Nunca me ha interesado el control del software del probador. Por eso no quiero implementar algo así.

Hubo algunas preguntas técnicas en este hilo sobre el uso de las funciones WinAPI, así que decidí participar.

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

Necesitamos

string sButtonStartName = "";

Al menos inicializar con longitud 6(StringLen("Start")+1), o preferiblemente con longitud 255 caracteres.

De lo contrario, después de que sButtonStartName sea devuelto por GetWindowTextA, la variable adyacente en la memoria se borra.

En mi ejemplo con RestoreScripts en la rama vecina, el valor de la cadena definida por #define cambia si no lo hace.

 
Erics >> :

Necesitamos

string sButtonStartName = "";

Al menos inicializar con longitud 6(StringLen("Start")+1), o preferiblemente con longitud 255 caracteres.

De lo contrario, después de que sButtonStartName sea devuelto por GetWindowTextA, la variable adyacente en la memoria se borra.

En mi ejemplo con RestoreScripts en la siguiente rama, el valor de la cadena definida por #define cambia, si no se hace así.

Sí, esto es correcto. Lo escribí rápidamente y me perdí este punto.

 
Ilnur >> :

Ha habido algunas preguntas técnicas en este hilo sobre el uso de las funciones WinAPI, así que he decidido participar.

Encontré una ventana interesante. Es casi imposible atrapar algo en él. La ventana se llama "Guardar como". ¿Puede decirme cómo pulsar el botón "Guardar como"?



Si se selecciona específicamente el botón de guardar, entonces tenemos el código de botón 00000001



Pero cuando se accede mediante este código, no ocurre nada. ¿Qué es esta ventana que no tiene nombre?

 
HIDDEN >> :

Encontré una ventana interesante. Es casi imposible atrapar algo en él. La ventana se llama "Guardar como". ¿Puede decirme cómo pulsar el botón "Guardar como"?


Si selecciona específicamente el botón de guardar, el código del botón es 00000001


Pero cuando se accede mediante este código, no ocurre nada. Qué tipo de ventana es esta sin nombre.

El diálogo es el estándar de Shell IIANM. Y el botón "guardar" es un botón ID_OK renombrado.

 
TheXpert >> :

El diálogo es el estándar de Shell IIANM. Y el botón "guardar" es un botón ID_OK renombrado.

Apelar al botón OK no hace nada


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