Fehler im Controlclick

  • Hi bekomme immer diesen fehler hier weiss aber nicht wieso, das & muss doch dahin oder nicht ?

    [autoit]


    ControlClick($win1, "", 0,"left","1", & @LF & "X: " & DllStructGetData($tpoint, "X") & @LF & "Y: " & DllStructGetData($tpoint, "Y") & @LF)
    ControlClick($win1, "", 0,"left","1", ^ ERROR

    [/autoit]


    Die include´s

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

    [/autoit]
  • sry vergessen hier der rest vom kuchen xD für alle was da ^^

    [autoit]

    Func _start()
    $hIBusWindow = GUICtrlRead($win1)
    Local $hwnd = $win1
    Local $tpoint = DllStructCreate("int X;int Y")
    DllStructSetData($tpoint, "X", 101)
    DllStructSetData($tpoint, "Y", 509)

    [/autoit][autoit][/autoit][autoit]

    Sleep(1000)
    _WinAPI_ScreenToClient($hwnd, $tpoint)

    ControlClick($win1, "", 0,"left","1", & @LF & _
    "X: " & DllStructGetData($tpoint, "X") & @LF & _
    "Y: " & DllStructGetData($tpoint, "Y") & @LF)
    EndFunc

    [/autoit]
  • geht leider nicht

    habe es jetzt mal so versucht geht aber auch nicht

    [autoit]

    Func _start()

    [/autoit][autoit][/autoit][autoit]

    $hwnd = GUICtrlRead($win1)
    $tpoint = DllStructCreate("int X;int Y")
    DllStructSetData($tpoint, "X", 150)
    DllStructSetData($tpoint, "Y", 519)

    [/autoit][autoit][/autoit][autoit]

    Sleep(1000)
    _WinAPI_ScreenToClient($hwnd, $tpoint)

    ControlClick($Char, "", 0,"left","1", DllStructGetData($tpoint, "X"), DllStructGetData($tpoint, "Y"))
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von Detroit49 (6. September 2010 um 20:15)

  • Du weiß schon wofür GUICtrlRead da ist oder? Du brauchst ein Handle für _WinAPI_ScreenToClient($hwnd, $tpoint). Und holst dir die Control-ID von einem Control. Warum???
    Wenn du schon den Code aus der Hilfe nimmst, dann kopier ihn auch richtig.

  • Du weiß schon wofür GUICtrlRead da ist oder? Du brauchst ein Handle für _WinAPI_ScreenToClient($hwnd, $tpoint). Und holst dir die Control-ID von einem Control. Warum???
    Wenn du schon den Code aus der Hilfe nimmst, dann kopier ihn auch richtig.

    ja ich habe auch eine inputbox wo ich den fenster namen eingeben muss damit das $win1 auch genutz werden kann


    das ist der originale ^^ mehr gibt es da nicht
    Func _start()
    $hIBusWindow = GUICtrlRead($win1)
    Local $hwnd = $win1
    Local $tpoint = DllStructCreate("int X;int Y")
    DllStructSetData($tpoint, "X", 101)
    DllStructSetData($tpoint, "Y", 509)

    Sleep(1000)
    _WinAPI_ScreenToClient($hwnd, $tpoint)

    ControlClick($win1, "", 0,"left","1", & @LF & _
    "X: " & DllStructGetData($tpoint, "X") & @LF & _
    "Y: " & DllStructGetData($tpoint, "Y") & @LF)
    EndFunc

  • das ist der originale ^^ mehr gibt es da nicht


    Dann ist es logisch das da rein gar nix funktioniert.
    Es bleiben haufenweise fragen übrig was dieser Code eigentlich soll.
    Unter anderem:

    • $win1 wurde nie definiert - was stellt die Variable dar, wo kommt sie her?
    • $hwnd lässt auf ein Handle schließen und wird bei _WinAPI_ScreenToClient auch als solches verwendet. Allerdings stammt ihr Wert aus GUICtrlRead. Mir ist keine Konstellation bekannt bei der GuiCtrlRead ein Handle zurückgibt - maximal eine ControlID aber mehr nicht.
    • $Char kann entweder ein Handle sein oder ein String mit Informationen zu Beschreibung des Fensters. Sie wird aber nie definiert weswegen nicht klar ist was sie beinhaltet.
    • Die Funktion _start() wird nie aufgerufen.
    • Mit _WinAPI_ScreenToClient wandelt man Koordinaten vom Absolutbezugssystem des Bildschirmes zum Relativsystem der Client-Area eines Fensters. Mit diesen Koordinaten startest du dann ControlClick. Das macht allerdings nur Sinn wenn man bei AutoIt vorher Opt("MouseCoordMode", 2) setzt - dies ist bei dir aber nicht vorhanden und selbst wenn muss das betreffende Fenster das derzeit aktive sein.
    • Bei ControlClick trägst du als Control-ID eine 0 ein - warum? - wie soll AutoIt wissen in welchem Control du klicken willst?


    Also zusammengefasst - der gezeigte Code ist ein Witz und vernünftige Hilfe kannst du hierzu nicht erwarten da du nicht mehr vom Code zeigst und nicht klar ausdrückst was eigentlich der Sinn des ganzen ist und was gemacht werden soll.


  • Dann ist es logisch das da rein gar nix funktioniert.
    Es bleiben haufenweise fragen übrig was dieser Code eigentlich soll.
    Unter anderem:

    • $win1 wurde nie definiert - was stellt die Variable dar, wo kommt sie her?
    • $hwnd lässt auf ein Handle schließen und wird bei _WinAPI_ScreenToClient auch als solches verwendet. Allerdings stammt ihr Wert aus GUICtrlRead. Mir ist keine Konstellation bekannt bei der GuiCtrlRead ein Handle zurückgibt - maximal eine ControlID aber mehr nicht.
    • $Char kann entweder ein Handle sein oder ein String mit Informationen zu Beschreibung des Fensters. Sie wird aber nie definiert weswegen nicht klar ist was sie beinhaltet.
    • Die Funktion _start() wird nie aufgerufen.
    • Mit _WinAPI_ScreenToClient wandelt man Koordinaten vom Absolutbezugssystem des Bildschirmes zum Relativsystem der Client-Area eines Fensters. Mit diesen Koordinaten startest du dann ControlClick. Das macht allerdings nur Sinn wenn man bei AutoIt vorher Opt("MouseCoordMode", 2) setzt - dies ist bei dir aber nicht vorhanden und selbst wenn muss das betreffende Fenster das derzeit aktive sein.
    • Bei ControlClick trägst du als Control-ID eine 0 ein - warum? - wie soll AutoIt wissen in welchem Control du klicken willst?


    Also zusammengefasst - der gezeigte Code ist ein Witz und vernünftige Hilfe kannst du hierzu nicht erwarten da du nicht mehr vom Code zeigst und nicht klar ausdrückst was eigentlich der Sinn des ganzen ist und was gemacht werden soll.

    Also ich weiss nicht warum der code ein witz sein soll aber naja erst lesen dan schreiben wa?!?!


    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <ScrollBarConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("", 1054, 334, 192, 124)
    $Pic1 = GUICreate("", 1060,362, -1, -1,BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_CLIPCHILDREN))
    $Button1 = GUICtrlCreateButton("Make it", 416, 16, 75, 41)
    $Button2 = GUICtrlCreateButton("Exit", 416, 72, 75, 41)
    $Group1 = GUICtrlCreateGroup("Group1", 512, 0, 1, 329)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Char = GUICtrlCreateInput("Fenstername", 528, 24, 121, 21)
    $Button5 = GUICtrlCreateButton("Start", 552, 48, 75, 25)
    $Button6 = GUICtrlCreateButton("Stop", 552, 80, 75, 25)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 520, 232, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 520, 248, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 520, 264, 97, 17)
    $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 520, 280, 97, 17)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    _stup1()
    case $Button5
    _start()
    case $Button6
    _stop()

    [/autoit][autoit][/autoit][autoit]


    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func _stup1()
    For $i = 1 To 4
    WinActive("navcoder")
    next
    $list = WinList("navocer")
    For $i = 1 To $list[0][0]
    WinSetTitle($list[$i][1], "", "nav" & $i)
    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    WinWait("nav1","","")
    $client1 = WinGetHandle("nav1")
    _WinAPI_SetParent($nav1,$Pic1)
    _WinAPI_MoveWindow($nav1, 8, 8, 396, 316)

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    $hIBusWindow = WinGetHandle($win1)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Opt('MustDeclareVars', 1)

    Func _start()

    [/autoit][autoit][/autoit][autoit]

    $hwnd = GUICtrlRead($win1)
    $tpoint = DllStructCreate("int X;int Y")
    DllStructSetData($tpoint, "X", 150)
    DllStructSetData($tpoint, "Y", 519)

    [/autoit][autoit][/autoit][autoit]

    Sleep(1000)
    _WinAPI_ScreenToClient($hwnd, $tpoint)

    ControlClick($win1, "", 0,"left","1", DllStructGetData($tpoint, "X"), DllStructGetData($tpoint, "Y"))
    EndFunc

    [/autoit]


    ja und ich weiss das EXIT ist noch nicht eingebaut !
    Danke hoffe es reicht so

  • Der Begriff Vollquottel sagt dir was?...
    Ansonsten denke ich das ich im vorherigen Post genug begründet habe warum der gezeigte Code ein Witz ist.
    In erster Linie ist er alleine nutzlos und nichtssagend, zum anderen sind haufenweise (habe ich einzeln aufgeführt) Fehler und Ungereimtheiten darin.
    Jetzt zeigst du uns zwar endlich etwas mehr Code aber sagst immer noch nicht konkret was am Ende eigentlich herauskommen soll und was das Ziel ist.
    Auf der anderen Seite hast du den Code anscheinend noch nichtmal versucht auszuführen denn dann würdest du schon alleine auf offensichtliche Fehler stoßen.

    Ausgabe von Tidy:

    Spoiler anzeigen


    Kurz und knapp: Ich habe dir Hinweise genannt auf welche du nicht eingegangen bist, du sagst immer noch nicht was du eigentlich überhaupt machen willst und schmeißt einfach Code hier rein der nicht ausführbar ist.
    Daher viel Spaß dir weiterhin mit deinem Code.

  • das ist immer noch der gleiche code ich habe nichts veränder ausser das halt auf ein gehidetr fenster ein click gemacht werden soll
    und die aber nur mit controlclick nicht geht !!!!!

  • Der von dir gepostete Code läuft definitv nicht siehe

    vielliecht hats du ja aus Versehen einen falschen Skriptstand gepostet.
    Ein Tippfehler der dir noch viel Ärger berieten könnte befindet sich in Zeile 49

    mfg autoBert

  • das habe ich ja gemachtdeswegen wundert mich das gradevideo 2 mit copy and paste


    du willst uns wohl vera****en, oder hast du eine fehlertolerante Version von AutoIt, die alle Fehler automatisch korrigiert? Hier das Skript, das ich getetstet habe:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <ScrollBarConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("", 1054, 334, 192, 124)
    $Pic1 = GUICreate("", 1060,362, -1, -1,BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_CLIPCHILDREN))
    $Button1 = GUICtrlCreateButton("Make it", 416, 16, 75, 41)
    $Button2 = GUICtrlCreateButton("Exit", 416, 72, 75, 41)
    $Group1 = GUICtrlCreateGroup("Group1", 512, 0, 1, 329)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Char = GUICtrlCreateInput("Fenstername", 528, 24, 121, 21)
    $Button5 = GUICtrlCreateButton("Start", 552, 48, 75, 25)
    $Button6 = GUICtrlCreateButton("Stop", 552, 80, 75, 25)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 520, 232, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 520, 248, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 520, 264, 97, 17)
    $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 520, 280, 97, 17)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    _stup1()
    case $Button5
    _start()
    case $Button6
    _stop()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _stup1()
    For $i = 1 To 4
    WinActive("navcoder")
    next
    $list = WinList("navocer")
    For $i = 1 To $list[0][0]
    WinSetTitle($list[$i][1], "", "nav" & $i)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WinWait("nav1","","")
    $client1 = WinGetHandle("nav1")
    _WinAPI_SetParent($nav1,$Pic1)
    _WinAPI_MoveWindow($nav1, 8, 8, 396, 316)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    $hIBusWindow = WinGetHandle($win1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Func _start()

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd = GUICtrlRead($win1)
    $tpoint = DllStructCreate("int X;int Y")
    DllStructSetData($tpoint, "X", 150)
    DllStructSetData($tpoint, "Y", 519)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Sleep(1000)
    _WinAPI_ScreenToClient($hwnd, $tpoint)

    [/autoit] [autoit][/autoit] [autoit]

    ControlClick($win1, "", 0,"left","1", DllStructGetData($tpoint, "X"), DllStructGetData($tpoint, "Y"))
    EndFunc

    [/autoit]

    allein der Tippfehler in Zeile 49 verhindert, dass die/das Fenster deines Navcoders überhaupt erkannt werden,

    mfg autoBert

  • ja den habe ich er kannt
    gucke dir da video an dann siehst du das ich das nehmen was ich gepostet habe

    aos ich habe die neuste autoit

  • ich mache noch nen vid ganz ganz laaaannnggsam ^^


    aso mal ne ganz dumme frage !?!?!
    habt ihr auch alle die winapi.au3 ? ^^

    Einmal editiert, zuletzt von Detroit49 (7. September 2010 um 16:14)