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

 
HIDDEN >> :

Come si intercettano i menu che si aprono sul primo tasto del mouse? Quando si passa a un altro programma dal terminale, il menu scompare e non si riesce a prenderlo. Forse dovete congelare il programma in qualche modo?

dal menu contestuale molte voci hanno un codice per WM_COMMAND

 
HIDDEN >> :

E come intercettare i menu che si aprono con il tasto destro del mouse. Passando a un altro programma dal terminale, il menu scompare e non si riesce proprio a prenderlo. Può esserci un modo per fermare il programma?

Quando si usa l'utilità Spy++ non ci sono problemi.

Nel software, selezionate la finestra desiderata dall'elenco delle finestre. Avviare Windows Message Interceptor (Spia -> Messaggi...).

Configura il filtro dei messaggi (scheda Messaggi) nella finestra che appare.


Si possono poi eseguire varie operazioni nel programma in esame, compreso il clic con il tasto destro del mouse sul menu e vedere cosa mostra l'utilità.

 
Ilnur >> :

Quando si usa l'utilità Spy++ non ci sono problemi.

Nel software, selezionate la finestra desiderata dall'elenco delle finestre. Avviare Windows Message Interceptor (Spia -> Messaggi...).

Configura il filtro dei messaggi nella finestra che appare (scheda Messaggi).


Dopo di che puoi fare diverse operazioni nel programma che stai studiando, incluso il menu del tasto destro del mouse e vedere cosa mostra l'utilità.

Domanda per te, se hai una così grande conoscenza in tutto ciò che hai scritto qui, perché non fai girare il tester automaticamente, lo ottimizzi, imposti le giuste variabili, ecc.

 

Come premere il tasto Invio programmaticamente

C'è qualcosa che non funziona.

Inserire DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

Domanda per te, se sei così esperto in tutto quello che hai scritto qui, perché non fai un'esecuzione automatica del tester, ottimizzazione, sostituzione delle variabili giuste, ecc.

Non ho una grande conoscenza di tutto ciò che ho esposto qui. Non l'ho mai affermato.


Non sono mai stato interessato al controllo software del tester. Ecco perché non voglio implementare qualcosa del genere.

C'erano alcune domande tecniche in questo thread sull'uso delle funzioni WinAPI, così ho deciso di partecipare.

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

Abbiamo bisogno di

stringa sButtonStartName = "";

Almeno inizializzare con lunghezza 6(StringLen("Start")+1), o preferibilmente con lunghezza 255 caratteri.

Altrimenti, dopo che sButtonStartName viene restituito da GetWindowTextA, la variabile adiacente in memoria viene cestinata.

Nel mio esempio con RestoreScripts nel ramo vicino, il valore della stringa definita da #define cambia se non lo fa.

 
Erics >> :

Abbiamo bisogno di

stringa sButtonStartName = "";

Almeno inizializzare con lunghezza 6(StringLen("Start")+1), o preferibilmente con lunghezza 255 caratteri.

Altrimenti, dopo che sButtonStartName viene restituito da GetWindowTextA, la variabile adiacente in memoria viene cestinata.

Nel mio esempio con RestoreScripts nel prossimo ramo, il valore della stringa definita da #define cambia, se non lo fa.

Sì, questo è corretto. Stavo scrivendo in fretta e mi è sfuggito questo punto.

 
Ilnur >> :

Ci sono state alcune domande tecniche in questo thread sull'uso delle funzioni WinAPI, così ho deciso di intervenire.

Ho trovato una finestra interessante. È quasi impossibile prenderci qualcosa. La finestra si chiama "Salva con nome". Puoi dirmi come premere il pulsante "Salva con nome"?



Se si seleziona specificamente il pulsante di salvataggio, allora abbiamo il codice del pulsante 00000001



Ma quando si accede con questo codice, non succede niente. Cos'è questa finestra che non ha nome?

 
HIDDEN >> :

Ho trovato una finestra interessante. È quasi impossibile prenderci qualcosa. La finestra si chiama "Salva con nome". Puoi dirmi come premere il pulsante "Salva con nome"?


Se si seleziona specificamente il pulsante di salvataggio, il codice del pulsante è 00000001


Ma quando si accede con questo codice, non succede niente. Che tipo di finestra è questa senza nome.

Il dialogo è standard Shell IIANM. E il pulsante "salva" è un pulsante ID_OK ribattezzato.

 
TheXpert >> :

Il dialogo è standard Shell IIANM. E il pulsante "salva" è un pulsante ID_OK ribattezzato.

Appellarsi al pulsante OK non fa nulla


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