ControlID Problem / ändert sich / auslesen

  • Habe ein dickes Problem.


    AUTOIT:


    Es geht darum das ich einen Button aus einer fremder GUI drücken möchte, jedoch liegt das Problem darin das sich die ControlID jedesmal ändert wenn man das Programm neu öffnet.
    Ich habe nun überlegt ob man anstatt die CONTROLID was anderes nehmen kann. Oder die ControlID vor dem drücken des Buttons auslesen kann, habe aber kein Plan wie das geht.


    Hier ein paar Informationen:::::


  • Kannst du nicht mit ControlClick die Class Instance ?
    Wenn nicht benutze noch die ControlClick Coords :)
    Die werden wohl immer gleich bleiben, da dass programm (gehe ich mal von aus) immer die gleiche größe hat.


    Werde es mir nachher mal genauer anschauen muss nun erstmal weg bis 15uhr


    Ehm welches Fenster ist das denn ?
    Würde es gerne mal ausprobieren, habe nur kein fenster wo sich die ID immer ändert ^^

  • Wenn du Glück hast, ändert sich die Instance nicht. Ansonsten kann man alle Buttontexte (hoffentlich nicht so viele) auslesen und findet so den gewünschten.
    Ansonsten, wie Awesome schon sagte, über die Koordinaten. Dazu eignet sich z.B. diese Funktion, wenn du weder ID, noch Instance, noch Ctrlhandle hast:

    Code
    1. Func _ControlClick($h_HWnd, $v_X = 0, $v_Y = 0, $v_Clicks = 1)
    2. $v_PosLong = BitOR($v_Y * 0x10000, BitAND($v_X, 0xFFFF))
    3. DllCall("User32.dll", "int", "PostMessage", "hwnd", $h_HWnd, "int", 0x0200, "int", 0, "long", $v_PosLong)
    4. For $hg = 1 To $v_Clicks
    5. DllCall("User32.dll", "int", "PostMessage", "hwnd", $h_HWnd, "int", 0x0201, "int", 0x0001, "long", $v_PosLong)
    6. Next
    7. DllCall("User32.dll", "int", "PostMessage", "hwnd", $h_HWnd, "int", 0x0202, "int", 0x0001, "long", $v_PosLong)
    8. EndFunc ;==>_ControlClick


    Für $HWnd ist dann das Winhandle zu benutzen.

  • Habe das Problem gelöst.


    Da die ControlID nicht eindeutig war musste ich die Class und Instance nehmen, desweiteren die Control ID coordinaten.


    ControlClick(fenstername,titel,"[CLASS:klasse; INSTANCE:1]","left",z,x, y)




    thread kann geclosed werden, danke an meine vorposten.