Automação com interceptação por botão e clique do mouse. - página 6

 
HIDDEN >> :

Como os menus que se abrem no primeiro botão do mouse são interceptados? Quando você muda para outro programa do terminal, o menu desaparece e você simplesmente não consegue pegá-lo. Talvez você precise congelar o programa de alguma forma?

do menu de contexto muitos itens têm um código para WM_COMMAND

 
HIDDEN >> :

E como interceptar menus que se abrem com o botão direito do mouse. Mudando para outro programa a partir do terminal, o menu desaparece e você simplesmente não pode pegá-lo. Talvez seja necessário parar o programa de alguma forma?

Ao utilizar o utilitário Spy++ não há problema.

No software, selecione a janela desejada a partir da lista de janelas. Iniciar o Windows Message Interceptor (Spy -> Messages...).

Configurar o filtro de mensagens (guia Mensagens) na janela que aparece.


Você pode então realizar várias operações no programa sob investigação, incluindo clicar com o botão direito do mouse no menu e ver o que a utilidade mostra.

 
Ilnur >> :

Ao utilizar o utilitário Spy++ não há problema.

No software, selecione a janela desejada a partir da lista de janelas. Iniciar o Windows Message Interceptor (Spy -> Messages...).

Configurar o filtro de mensagens na janela que aparece (guia Mensagens).


Depois disso, você pode fazer diferentes operações no programa que está investigando, incluindo o menu de clique com o botão direito do mouse e ver o que a utilidade mostra.

Pergunta para você, se você tem um conhecimento tão grande em tudo que escreveu aqui, por que não faz o testador funcionar automaticamente, otimiza-o, define as variáveis corretas, etc.

 

Como pressionar programticamente a tecla Enter

Algo nisto não funciona.

Digite DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

Pergunta para você, se você é tão conhecedor de tudo o que escreveu aqui, por que você não faz um teste automático, otimização, substituição das variáveis corretas, etc.

Eu não tenho grandes conhecimentos em tudo o que expus aqui. Eu nunca afirmei isso.


Nunca estive interessado no controle do software do testador. É por isso que eu não quero implementar algo assim.

Havia algumas perguntas técnicas neste tópico sobre o uso das funções WinAPI, então decidi me envolver.

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

Precisamos de

string sButtonStartName = "";

Pelo menos inicializar com comprimento 6(StringLen("Start")+1), ou de preferência com comprimento 255 caracteres.

Caso contrário, após sButtonStartName ser devolvido do GetWindowTextA, a variável adjacente na memória é destruída.

Em meu exemplo com RestoreScripts no ramo vizinho, o valor da string definida por #define muda se não o fizer.

 
Erics >> :

Precisamos de

string sButtonStartName = "";

Pelo menos inicializar com comprimento 6(StringLen("Start")+1), ou de preferência com comprimento 255 caracteres.

Caso contrário, após sButtonStartName ser devolvido do GetWindowTextA, a variável adjacente na memória é destruída.

No meu exemplo com RestoreScripts no próximo ramo, o valor da string definida por #define muda, se não o fizer.

Sim, isto é correto. Eu estava escrevendo rapidamente e perdi este ponto.

 
Ilnur >> :

Houve algumas perguntas técnicas neste tópico sobre o uso das funções WinAPI, então decidi me envolver.

Encontrei uma janela interessante. É quase impossível apanhar qualquer coisa dentro dele. A janela é chamada de "Salvar Como". Você pode me dizer como pressionar o botão "Salvar como"?



Se você selecionar o botão salvar especificamente, temos o código do botão 00000001



Mas quando você acessa por este código, nada acontece. O que é esta janela que não tem nome?

 
HIDDEN >> :

Encontrei uma janela interessante. É quase impossível apanhar qualquer coisa dentro dele. A janela é chamada de "Salvar como". Você pode me dizer como pressionar o botão "Salvar como"?


Se você selecionar o botão salvar especificamente, o código do botão é 00000001


Mas quando você acessa por este código, nada acontece. Que tipo de janela é esta sem nome.

O diálogo é padrão Shell IIANM. E o botão "salvar" é um botão ID_OK rebranded.

 
TheXpert >> :

O diálogo é padrão Shell IIANM. E o botão "salvar" é um botão ID_OK rebranded.

Apelar para o botão OK não faz nada


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