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
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] )
Vieleicht hilft dir das ja weiter?
@ 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.
;===============================================================================
;
; 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
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
Func _MakeLong($LoWord,$HiWord)
Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc
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.
was soll man denn sonst machen?
soll man es in den include ordner reintun?
Öhm, so, wie man eine normale Funktion aufruft:
_MouseClickPlus("Total Commander 7.03 - NICHT REGISTRIERT", "left", "220", "344", 1)
Func _MouseClickPlus($Window, $Button, $X, $Y , $Clicks = 1)
...
EndFunc
Und an den Anfang vom Skript: Opt("MouseCoordMode",0)
So also das soll mein fertiges script sein...geht aber nich 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
Hmm, lass mich überlegen...
Zitatund dieser scheiß MouseMove und MouseClick kack is kacke weil man nimmer am pc sein kann..bitte hilf mir doch einer
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?
Opt("MouseCoordMode",0)
_MouseClickPlus("Das Deutschlandspiel - Mozilla Firefox", "left", "540", "400", 1)
Func _MouseClickPlus($Window, $Button, $X, $Y , $Clicks = 1)
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
_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
Local $MK_RBUTTON = 0x0002
Local $WM_RBUTTONDOWN = 0x0204
Local $WM_RBUTTONUP = 0x0205
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
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 ;==>_MouseClickPlus
Func _MakeLong($LoWord, $HiWord)
Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc ;==>_MakeLong
Ich habs so geändert, dass es in Opera auf https://autoit.de/www.google.de in die InputBox klicken soll (Koordinaten natürlich angepasst). Aber es passiert einfach nichts wenn ich das Skript starte.
poste mal dein script wie es jetzt aussieht, dann können wir helfen
_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
Local $MK_RBUTTON = 0x0002
Local $WM_RBUTTONDOWN = 0x0204
Local $WM_RBUTTONUP = 0x0205
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
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 ;==>_MouseClickPlus
Func _MakeLong($LoWord, $HiWord)
Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc ;==>_MakeLong
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
Opt("MouseCoordMode", 0)
[/autoit]
einfügen