ControlClick/Send ohne ID?

  • Hi!

    Ich habe nur die folgenden Daten:
    - Fenstername
    - Text ("")
    - Ein Klick
    - X und Y Koordinaten

    Wie kann ich ohne eine ID ControlClick/Send verwenden? Bis jetzt hab ich immer Sytax-Errors bekommen.

    fabs

  • nachdem Deine Info's etwas spärlich sind mal ein Versuch in's blaue... ;)

    WinActivate ( "title" [, "text"] )
    Send ( "keys" [, flag] )

    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. ;)

  • @ Monkey: Cool, sowas suche ich schon länger =)

    aber gibt es sowas auch für texte? die funtion bei dem link macht nur mouseclicks in minimierte fenster..

  • Ich habs mit der Funktion probiert aber es passiert einfach nix.

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _MouseClickPlus()
    ; Version added: 0.1
    ; Description: Sends a click to window, not entirely accurate, but works
    ; minimized.
    ; Parameter(s): $Window = Title of the window to send click to
    ; $Button = "left" or "right" mouse button
    ; $X = X coordinate
    ; $Y = Y coordinate
    ; $Clicks = Number of clicks to send
    ; Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs.
    ; Author(s): Insolence <[email='insolence_9@yahoo.com'][/email]>
    ;
    ;===============================================================================
    Func _MouseClickPlus($Window = "Total Commander 7.03 - NICHT REGISTRIERT", $Button = "left", $X = "220", $Y = "344", $Clicks = 1)
    Local $MK_LBUTTON = 0x0001
    Local $WM_LBUTTONDOWN = 0x0201
    Local $WM_LBUTTONUP = 0x0202

    Local $MK_RBUTTON = 0x0002
    Local $WM_RBUTTONDOWN = 0x0204
    Local $WM_RBUTTONUP = 0x0205

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

    Local $WM_MOUSEMOVE = 0x0200

    Local $i = 0

    Select
    Case $Button = "left"
    $Button = $MK_LBUTTON
    $ButtonDown = $WM_LBUTTONDOWN
    $ButtonUp = $WM_LBUTTONUP
    Case $Button = "right"
    $Button = $MK_RBUTTON
    $ButtonDown = $WM_RBUTTONDOWN
    $ButtonUp = $WM_RBUTTONUP
    EndSelect

    If $X = "" OR $Y = "" Then
    $MouseCoord = MouseGetPos()
    $X = $MouseCoord[0]
    $Y = $MouseCoord[1]
    EndIf

    For $i = 1 to $Clicks
    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle( $Window ), _
    "int", $WM_MOUSEMOVE, _
    "int", 0, _
    "long", _MakeLong($X, $Y))

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle( $Window ), _
    "int", $ButtonDown, _
    "int", $Button, _
    "long", _MakeLong($X, $Y))

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle( $Window ), _
    "int", $ButtonUp, _
    "int", $Button, _
    "long", _MakeLong($X, $Y))
    Next
    EndFunc

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

    Func _MakeLong($LoWord,$HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
    EndFunc

    [/autoit]

    Es passiert einfach nix ...

  • Hallo fabs,

    du solltest Deine Daten nicht innerhalb der Funktion eintragen, sondern die Funktion innerhalb Deines Scriptes mit Deinen Parametern aufrufen.

    Du hast z.B. innerhalb der Funktion die Übergabe-Variable $Window mit Deinem Fenster namen über schrieben.
    Die Funktion arbeitet also mit der Variable $Window ohne dass diese einen Inhalt zugewiesen bekommt.

    Beachte auch den Hinweis: Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs.

    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. ;)

  • was soll man denn sonst machen?

    soll man es in den include ordner reintun?

  • Öhm, so, wie man eine normale Funktion aufruft:

    Spoiler anzeigen
    [autoit]

    _MouseClickPlus("Total Commander 7.03 - NICHT REGISTRIERT", "left", "220", "344", 1)
    Func _MouseClickPlus($Window, $Button, $X, $Y , $Clicks = 1)
    ...
    EndFunc

    [/autoit]


    Und an den Anfang vom Skript: Opt("MouseCoordMode",0)

  • Spoiler anzeigen
    Code
    Opt("MouseCoordMode",0)
    _MouseClickPlus("Google - Mozilla Firefox", "left", "540", "400", 1)
    Func _MouseClickPlus($Window, $Button, $X, $Y , $Clicks = 1)
    
    
    EndFunc

    So also das soll mein fertiges script sein...geht aber nich :D was soll ich denn da machen? ich hab kp sry ?(

    bitte helft mir ich versuch das schon nen halbes jahr..und dieser scheiß MouseMove und MouseClick kack is kacke weil man nimmer am pc sein kann..bitte hilf mir doch einer :S

    Einmal editiert, zuletzt von NiGHTMARE (26. Mai 2008 um 16:38)

    • Offizieller Beitrag

    Hmm, lass mich überlegen...

    Zitat

    und dieser scheiß MouseMove und MouseClick kack is kacke weil man nimmer am pc sein kann..bitte hilf mir doch einer :S

    Steigert das unseren Ansporn zu helfen? Ich glaube nicht.
    Es ist okay, wenn du dich wunderst oder ärgerst, dass etwas nicht so funktioniert wie du willst. In aller Regel können wir oder das Internet dir aber erklären, warum. Nur die Voraussetzung ist eben, dass man das ruhig und sachlich formuliert...

    Zum Problem:
    Die Geschichte ist mir bot-verdächtig (was nicht nur bei mir den Hilfe-Drang drastisch senkt), also schreib doch bitte klar dazu, was du machen willst. Das hilft ungemein, weil wir vermutlich besser wissen als du, wie man vom Problem zur Lösung kommt.

    peethebee

  • Ok..es ist nur so das ich so lange danach suche...naja
    ich möchte bei einen "bot" erstellen der alle 5 min auf eine stelle klickt....
    ich hab das bereits alles mit MouseMove etc hinbekommen doch wenn ich mal schnell an den pc muss muss ich ihn wieder beenden..oder kann nicht ungestört in foren lesen..
    es ist nicht so das es das einzige ist was ich will so autoit mäßig mir macht autoit spaß deshalb mach ich das...
    und wenn wäre es nur für eigene zwecke..würde mich freuen wenn ich dennoch hilfe von euch bekomme.

    Und jetzt zum Problem

    Ich weiß nicht wie ich mit MouseClick plus einen KLICK "erstelle"

    wo soll denn das "grundscript" oder wie auch immer hin was im der autoitscript.com forum zu finden ist

    wird dieses nicht benötigt?

    Spoiler anzeigen
    [autoit]

    Opt("MouseCoordMode",0)
    _MouseClickPlus("Das Deutschlandspiel - Mozilla Firefox", "left", "540", "400", 1)
    Func _MouseClickPlus($Window, $Button, $X, $Y , $Clicks = 1)

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

    EndFunc

    [/autoit]


    Brauch man nicht mehr als das?

  • Die Funktion muss natürlich noch dastehen. Darum hab ich ja auch 3 PUNKTE als Auslassungszeicehn reingemacht ;)
    Und MakeLong brauchst du natüröich auch ...

  • make long? sry was ist das?
    und welche funktion...ich möchte ja nur einen klick machen..die die auf der seite steht da?


    Tut mir leid das einzige was ich bis jetzt hinbekommen habe ist das normal mit MouseMove zu machen

    Meinst du das
    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle( $Window ), _
    "int", $WM_MOUSEMOVE, _
    "int", 0, _
    "long", _MakeLong(Number($X), Number($Y)))

    Ich habe immer nur zu hören bekommen ich soll die hilfe lesen die hilfe kapier ich aber in den seltensten fällen
    das is schon das eizige mal das mir jemand mit autoit hilft..

  • OMG Du bracuhst alles, was du in #5 gepostet hast. Ich hab dir nur den Aufruf der Funktion geschrieben :(

  • ich brauche das..
    ich versteh das nicht kannst du das nicht einfach mal als beispiel machne das wäre extrem nett
    ich habs ja lange genug versucht..wäre echt klasse

    (ein bsp wie er in firefox auf suchen bei google klickt oder sowas..einfach ein klick in firefox)

  • das macht einen klick bei der seite bei x:540 y:400

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    _mouseclickplus( "Das Deutschlandspiel - Mozilla Firefox", "left", 540, 400, 1 )

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

    ;===============================================================================
    ;
    ; Function Name: _MouseClickPlus()
    ; Version added: 0.1
    ; Description: Sends a click to window, not entirely accurate, but works
    ; minimized.
    ; Parameter(s): $Window = Title of the window to send click to
    ; $Button = "left" or "right" mouse button
    ; $X = X coordinate
    ; $Y = Y coordinate
    ; $Clicks = Number of clicks to send
    ; Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs.
    ; Author(s): Insolence <[email='insolence_9@yahoo.com'][/email]>
    ;
    ;===============================================================================
    Func _MouseClickPlus($Window, $Button = "left", $x = "", $y = "", $Clicks = 1)
    Local $MK_LBUTTON = 0x0001
    Local $WM_LBUTTONDOWN = 0x0201
    Local $WM_LBUTTONUP = 0x0202

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

    Local $MK_RBUTTON = 0x0002
    Local $WM_RBUTTONDOWN = 0x0204
    Local $WM_RBUTTONUP = 0x0205

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

    Local $WM_MOUSEMOVE = 0x0200

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

    Local $i = 0

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

    Select
    Case $Button = "left"
    $Button = $MK_LBUTTON
    $ButtonDown = $WM_LBUTTONDOWN
    $ButtonUp = $WM_LBUTTONUP
    Case $Button = "right"
    $Button = $MK_RBUTTON
    $ButtonDown = $WM_RBUTTONDOWN
    $ButtonUp = $WM_RBUTTONUP
    EndSelect

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

    If $x = "" Or $y = "" Then
    $MouseCoord = MouseGetPos()
    $x = $MouseCoord[0]
    $y = $MouseCoord[1]
    EndIf

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

    For $i = 1 To $Clicks
    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $WM_MOUSEMOVE, _
    "int", 0, _
    "long", _MakeLong($x, $y))

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

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $ButtonDown, _
    "int", $Button, _
    "long", _MakeLong($x, $y))

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

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $ButtonUp, _
    "int", $Button, _
    "long", _MakeLong($x, $y))
    Next
    EndFunc ;==>_MouseClickPlus

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

    Func _MakeLong($LoWord, $HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
    EndFunc ;==>_MakeLong

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    _mouseclickplus( "Google - Opera", "left", 452, 335, 1 )

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

    ;===============================================================================
    ;
    ; Function Name: _MouseClickPlus()
    ; Version added: 0.1
    ; Description: Sends a click to window, not entirely accurate, but works
    ; minimized.
    ; Parameter(s): $Window = Title of the window to send click to
    ; $Button = "left" or "right" mouse button
    ; $X = X coordinate
    ; $Y = Y coordinate
    ; $Clicks = Number of clicks to send
    ; Remarks: You MUST be in "MouseCoordMode" 0 to use this without bugs.
    ; Author(s): Insolence <[email='insolence_9@yahoo.com'][/email]>
    ;
    ;===============================================================================
    Func _MouseClickPlus($Window, $Button = "left", $x = "", $y = "", $Clicks = 1)
    Local $MK_LBUTTON = 0x0001
    Local $WM_LBUTTONDOWN = 0x0201
    Local $WM_LBUTTONUP = 0x0202

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

    Local $MK_RBUTTON = 0x0002
    Local $WM_RBUTTONDOWN = 0x0204
    Local $WM_RBUTTONUP = 0x0205

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

    Local $WM_MOUSEMOVE = 0x0200

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

    Local $i = 0

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

    Select
    Case $Button = "left"
    $Button = $MK_LBUTTON
    $ButtonDown = $WM_LBUTTONDOWN
    $ButtonUp = $WM_LBUTTONUP
    Case $Button = "right"
    $Button = $MK_RBUTTON
    $ButtonDown = $WM_RBUTTONDOWN
    $ButtonUp = $WM_RBUTTONUP
    EndSelect

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

    If $x = "" Or $y = "" Then
    $MouseCoord = MouseGetPos()
    $x = $MouseCoord[0]
    $y = $MouseCoord[1]
    EndIf

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

    For $i = 1 To $Clicks
    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $WM_MOUSEMOVE, _
    "int", 0, _
    "long", _MakeLong($x, $y))

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

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $ButtonDown, _
    "int", $Button, _
    "long", _MakeLong($x, $y))

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

    DllCall("user32.dll", "int", "SendMessage", _
    "hwnd", WinGetHandle($Window), _
    "int", $ButtonUp, _
    "int", $Button, _
    "long", _MakeLong($x, $y))
    Next
    EndFunc ;==>_MouseClickPlus

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

    Func _MakeLong($LoWord, $HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
    EndFunc ;==>_MakeLong

    [/autoit]
  • ach ja, du musst bei den koordinaten noch etwas subtrahieren, weiß jetzt nicht genau was, aber da kannst du bei dem link beim 2. oder 3. post nachsehen
    und du musst am anfang deines scriptes noch

    [autoit]

    Opt("MouseCoordMode", 0)

    [/autoit]


    einfügen