Ein Programm mit AutoIt bedienen, aber Button ist keine eigenständige Instanz...

  • Hallo,

    ich habe ein Script bei dem ich einfach mit ControlClick () auf einen Button drück will.

    Problem dabei: Der Button ist keine eigenständige Instanz. Er lässt sich zwar über das Finder Tool mit den Koordinaten anvisieren, aber nicht drücken.

    Mein Vorgehen ist einfach:


    Code
    If winactive() Then
    winactivate("Programm")
    Endif
    
    
    controlclick("","",ControlID,"",1,x,y)

    Ich vermute eine Eigenheit in dem Programm (es handelt sich dabei um Auctionstudio)

    Der Button wird gedrückt, aber nicht ausgeführt....einfach nur gehalten, wie wenn ich die linke Maustaste gedrückt halte.

    Wisst Ihr warum?

    Das Problem hatte ich bisher nocht nicht...

    Danke für eure Hilfe.

  • in der Regel werden clicks erst mit dem loslassen ausgeführt.

    Warum das bei deinem Button nicht passiert ist so schwer zu sagen...

    PS: die Koordinaten brauchst du nicht. Die geben nur an, an welcher Stelle innerhalb des Buttons geclickt werden soll.
    Wenn du da Werte größer dem Button angibst, dann wird das vermutlich Probleme geben.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • in der Regel werden clicks erst mit dem loslassen ausgeführt.

    Warum das bei deinem Button nicht passiert ist so schwer zu sagen..

    ControlClick ist doch in sich geschlossen. Damit meine ich, das nach diesem Befehl kein weiterer folgen muss, damit der Button wieder losgelassen wird.

    Deswegen verstehe ich nicht, das der Button gedrückt wird, aber nicht wieder losgelassen...

    PS: die Koordinaten brauchst du nicht. Die geben nur an, an welcher Stelle innerhalb des Buttons geclickt werden soll.
    Wenn du da Werte größer dem Button angibst, dann wird das vermutlich Probleme geben.

    Ich nutze die ControlClick Coords: 974, 740. Die brauche ich, damit ich eine relative Position für jeden Bildschirmauflösung habe.

    VG

  • Gedankenanstoss: ich gehe davon aus, dass das Control nicht 974x740px groß ist, oder... ?

    Wohin soll denn dann innerhalb des Controls geclickt werden?

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Gedankenanstoss: ich gehe davon aus, dass das Control nicht 974x740px groß ist, oder... ?

    Wohin soll denn dann innerhalb des Controls geclickt werden?

    Die ClickCoordinaten sind der Punkt, an dem sich der Cursor in dem Moment innerhalb die ControlID befindet. Somit ist das auch meine Zielkoordinate.


    Die ist ja auch nicht das Problem.

    Der gewünschte Button wird ja auch selektiert, aber eben NUR selektiert....:-(

    VG

  • versuch es mal ohne die Angabe von Koordinaten bei ControlClick()

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • versuch es mal ohne die Angabe von Koordinaten bei ControlClick()

    Und wie findet CC dann den Button?

    Die Instanz (200x300px) ist ein Feld mit 10 Button.
    Die Button selber werden von AutoIt nicht einzeln erkannt.

    Somit muss ich über ein Koordinatensystem CC sagen wo der Klick ausgeführt werden soll, oder nicht?

  • Unten siehst du die Scite Menüleitse.

    Die wird nur angeben als Instance 1.

    Wie lasse ich ControlClick nun den Speicherbutton drücken?

    AutoIt
    ControlClick("","",352,"left",1,65,12)
  • Über CC, klar. Allerdings nur, wenn man die Abkürzung nicht für ControlClick, sondern für ControlCommand verwendet.
    Einmal der Speichern-Button:

    [autoit]


    $hWnd = WinGetHandle("[CLASS:SciTEWindow]")
    $sCtrl = "[CLASS:ToolbarWindow32; INSTANCE:1]"
    ControlCommand($hWnd, "", $sCtrl, "SendCommandID", 106)

    [/autoit]


    Wenn du den Öffnen-Dialog haben willst, dann setz' einfach 102 statt 106 ein. Ist zum Testen praktischer weil es sichtbar ist. ^^

    Hintergrund:
    Tatsächlich kann man nicht so einfach auf die einzelnen Button in einem ToolbarWindow32-Control zugreifen. Dafür gibt es aber ControlCommand mit dem Parameter "SendCommandID". Mittels des Toolbar-Tabs im Window Info Tool kann man dann die Command-IDs auslesen. Wenn bei dir keine Beschriftungen angezeigt werden, einfach abzählen. "0" steht für einen Trennstrich. Vielleicht klappt das bei deiner Software ja auch.

  • bei genauem Hinsehen fällt mir auf, dass du mit ControlClick ein Chrome Fenster steuern willst...

    Ich denke dass das so nicht gehen wird... (ist aber nur eine Vermutung)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hi,

    das Tool heißt AuctionStudio und ich will den Bestellbutton drücken.

    Hier der Auszug mit Controlkoordinaten auf dem Button.

  • sieht mir nach einer .Net App aus ...

    sry, da bin ich raus :(

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hey, das sieht mir schwer nach einem Rebar-Control aus. Dazu gibt es entsprechende Funktionen in der GuiReBar.au3. Versuch doch mal ob du passende Funktionen findest um den Button ein wenig einzugrenzen. Parallel vielleicht noch mit der GuiButton.au3 arbeiten. :)

    €dit: Was mir noch alternativ einfällt, schick doch mal eine Windows Message an das Programm. Welche das genau ist und welche Parameter du setzen musst, da muss ich erst selber ein wenig herumexperimentieren. ^^

    2 Mal editiert, zuletzt von Yjuq (19. August 2015 um 18:58)

  • Hallo,

    das könnte was werden, aber mit GuiReBar kenn ich mich gar nicht aus....

    Habe es gerade geschaffte über die ControlID die Bar in ein eigenes GUI zu bekommen. Damit wird aber auch gleichzeitig die BAR aus dem eigentlichen Programm rausgenommen aber nicht richtig dargestellt... weißt du warum?

    AutoIt
    _GUICtrlRebar_AddToolBarBand ($hReBar, 4786050, "ACS", -1,$RBBS_BREAK)
  • Moinsen,

    da ich mit Rebar nicht wirklich weiterkomme, habe ich mich vorerst für ImageSearch entschieden. Da funktioniert der Mousklick komischerweise....

    Trotzdem danke für eure Hilfe.

    Bitte Thread schließen.


    Grüße,

    horphi