Automatisierung mit Abfangen von Tasten und Mausklicks. - Seite 6

 
HIDDEN >> :

Wie werden die Menüs, die auf die erste Maustaste hin geöffnet werden, abgefangen? Wenn Sie vom Terminal aus zu einem anderen Programm wechseln, verschwindet das Menü und Sie können es nicht mehr auffinden. Vielleicht müssen Sie das Programm irgendwie einfrieren?

im Kontextmenü haben viele Einträge einen Code für WM_COMMAND

 
HIDDEN >> :

Und wie lassen sich Menüs abfangen, die mit der rechten Maustaste geöffnet werden. Wenn man vom Terminal aus zu einem anderen Programm wechselt, verschwindet das Menü und man kann es einfach nicht mehr auffangen. Vielleicht ist es notwendig, das Programm irgendwie zu stoppen?

Bei Verwendung des Dienstprogramms Spy++ gibt es keine Probleme.

Wählen Sie in der Software das gewünschte Fenster aus der Liste der Fenster aus. Starten Sie Windows Message Interceptor (Spy -> Messages...).

Konfigurieren Sie im daraufhin angezeigten Fenster den Nachrichtenfilter (Registerkarte "Nachrichten").


Sie können dann verschiedene Operationen in dem untersuchten Programm durchführen, z. B. mit der rechten Maustaste auf das Menü klicken und sehen, was das Dienstprogramm anzeigt.

 
Ilnur >> :

Bei Verwendung des Dienstprogramms Spy++ gibt es keine Probleme.

Wählen Sie in der Software das gewünschte Fenster aus der Liste der Fenster aus. Starten Sie Windows Message Interceptor (Spy -> Messages...).

Konfigurieren Sie den Nachrichtenfilter in dem daraufhin angezeigten Fenster (Registerkarte Nachrichten).


Danach können Sie verschiedene Operationen in dem zu untersuchenden Programm durchführen, einschließlich des Rechtsklick-Menüs, und sehen, was das Dienstprogramm anzeigt.

Frage an Sie: Wenn Sie so viel Wissen über alles haben, was Sie hier geschrieben haben, warum lassen Sie den Tester nicht automatisch laufen, optimieren ihn, setzen die richtigen Variablen usw.

 

So drücken Sie programmgesteuert die Eingabetaste

Irgendetwas daran funktioniert nicht.

Eingabe DOM_VK_ENTER 13 0x0D
 
HIDDEN >> :

Eine Frage an Sie: Wenn Sie in allem, was Sie hier geschrieben haben, so bewandert sind, warum machen Sie dann nicht einen automatischen Testlauf, Optimierung, Ersetzung der richtigen Variablen usw.

Ich habe nicht in allem, was ich hier dargelegt habe, große Kenntnisse. Das habe ich nie behauptet.


Ich habe mich nie für die Software-Steuerung des Prüfgeräts interessiert. Deshalb möchte ich so etwas nicht einführen.

In diesem Thread wurden einige technische Fragen über die Verwendung von WinAPI-Funktionen gestellt, so dass ich beschlossen habe, mich daran zu beteiligen.

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

Wir brauchen

string sButtonStartName = "";

Initialisieren Sie zumindest mit der Länge 6(StringLen("Start")+1) oder vorzugsweise mit einer Länge von 255 Zeichen.

Andernfalls wird, nachdem sButtonStartName von GetWindowTextA zurückgegeben wurde, die angrenzende Variable im Speicher gelöscht.

In meinem Beispiel mit RestoreScripts im benachbarten Zweig ändert sich der Wert der durch #define definierten Zeichenkette, wenn dies nicht der Fall ist.

 
Erics >> :

Wir brauchen

string sButtonStartName = "";

Initialisieren Sie zumindest mit der Länge 6(StringLen("Start")+1) oder vorzugsweise mit einer Länge von 255 Zeichen.

Andernfalls wird, nachdem sButtonStartName von GetWindowTextA zurückgegeben wurde, die angrenzende Variable im Speicher gelöscht.

In meinem Beispiel mit RestoreScripts im nächsten Zweig ändert sich der Wert der durch #define definierten Zeichenfolge, wenn dies nicht geschieht.

Ja, das ist richtig. Ich habe ihn schnell geschrieben und diesen Punkt übersehen.

 
Ilnur >> :

In diesem Thread wurden einige technische Fragen über die Verwendung von WinAPI-Funktionen gestellt, so dass ich beschlossen habe, mich daran zu beteiligen.

Ich habe ein interessantes Fenster gefunden. Es ist fast unmöglich, darin etwas zu fangen. Das Fenster heißt "Speichern unter". Können Sie mir sagen, wie ich die Schaltfläche "Speichern unter" betätigen kann?



Wenn Sie speziell die Schaltfläche "Speichern" auswählen, haben wir den Schaltflächencode 00000001



Aber wenn Sie mit diesem Code darauf zugreifen, passiert nichts. Was ist dieses Fenster, das keinen Namen hat?

 
HIDDEN >> :

Ich habe ein interessantes Fenster gefunden. Es ist fast unmöglich, darin etwas zu fangen. Das Fenster heißt "Speichern unter". Können Sie mir sagen, wie ich die Schaltfläche "Speichern unter" betätigen kann?


Wenn Sie speziell die Schaltfläche "Speichern" auswählen, lautet der Schaltflächencode 00000001


Aber wenn Sie mit diesem Code darauf zugreifen, passiert nichts. Um was für ein Fenster handelt es sich bei diesem unbenannten Fenster?

Der Dialog ist Standard Shell IIANM. Und die Schaltfläche "Speichern" ist eine umbenannte ID_OK-Schaltfläche.

 
TheXpert >> :

Der Dialog ist Standard Shell IIANM. Und die Schaltfläche "Speichern" ist eine umbenannte ID_OK-Schaltfläche.

Der Appell an die OK-Taste bringt nichts


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