Nicht-Standard Control anklicken ?

  • Hallo,

    Ich habe folgendes anliegen. Ich möchte in einem Fenster einen bestimmten Button anklicken, von dem ich weder die ControlID noch die Klasse kenne, noch den Handle.
    Es ist der kleine gelbe Ordner unten links:
    [Blockierte Grafik: http://img.xrmb2.net/images/478355.png]

    Scheinbar ist das kein Standard Control, denn weder Autoit Window Helper, noch Control Viewer erkennt den Button. Ich weiß lediglich, dass er sich in dem einem
    TPanel befindet. Davon kenne ich die Instanz und die ID. Ich würde gern den Button mit ControlClick() anklicken und hatte mal das folgende Versucht was witzigerweise mal bei einem
    anderen Button geklappt hat (Da lag auch ein "Nicht-standard-Button" in einem TPanel und da klappte es astrein). Nur bei dem jetzigen geht es eben so gar nicht:

    [autoit]

    ControlClick("[CLASS:TAnimationForm]","","[CLASS:TPanel; INSTANCE:2]","left",19,221)

    [/autoit]

    Hat jemand eine Idee, wie ich diesen Button trotzdem irgendwie im Hintergrund anklicken kann oder die ControlID herausfinde?

  • hi,
    ich hatte auch solch ein problem und bei dir würden 2 Lösungen passen:
    1. ControlClick bezogen auf einen festen X- und Y-Wert, sofern der WindowTitle vorhanden ist (den button name einfach weglassen, jedoch die Anführungszeichen aufführen)
    2. Oder du benutzt "_ImageSearch()". Danach erhälst du die X- und Y-Werte des Bildes und kannst anhand dieser Daten dann, ein ControlClick oder MouseClick machen (lieber ControlClick).

    Ich empfehle Variante 2 - schliesst Eventualitäten aus.


  • Ich empfehle Variante 2 - schliesst Eventualitäten aus.

    Ähm nein nicht wirklich, da der Ordner recht standardmässig für mich ausschaut und somit evtl auch solch ein Ordnersymbol in einem anderen Programm gefunden werden könnte, das gerade im Vordergrund ist. Da wäre ich also ein wenig vorsichtig.
    Da der Ordner aber wohl sehr wahrscheinlich für "Datei öffnen" steht gibt es vielleicht noch

    Variante 3: Starte das Programm mit Parametern um die Datei zu öffnen. Viele Programme reagieren auf solche Konstrukte --> prog.exe "c:\dateipfad\datei.endung" bzw. alternativ eben die Datei im Standardprogramm öffnen per shellexecute("datei")

    Je nachdem ob noch mehr als das Öffnen automatisiert werden soll ist das aber vllt dann nur die halbe Lösung.

  • Das stimmt, der Ordner könnte oft vorkommen!! Deswegen sollte man beim verwenden von ImageSearch dies immer im Hinterkopf behalten und aussagekräftige Bilder verwenden damit keine Redundanzen auf dem Bildschirm vorkommen.
    Ich hätte zB dieses Bild verwendet.
    [Blockierte Grafik: http://www.bilder-upload.eu/thumb/cfb710-1379355404.png]

    Entweder nimmt man hier dann die Mitte abzüglich 20, oder die linke obere ecke plus 10 oder ähnlich.

    Aber ein Shellexecute mit den korrekten Parametern (sofern man sie kennt) ist noch sauberer.