Bei "$zeit = $zeit - 1" wird immer 1 ms von $zeit subtrahiert.
Mh, die Schleife kann man schlecht kleiner machen-.-
gibs vlt. eine andere alternative?
aber das subtrahieren samt Schleife dauert nicht 1 msec ....
Alternative siehe mein Vorpost
Bei "$zeit = $zeit - 1" wird immer 1 ms von $zeit subtrahiert.
Mh, die Schleife kann man schlecht kleiner machen-.-
gibs vlt. eine andere alternative?
aber das subtrahieren samt Schleife dauert nicht 1 msec ....
Alternative siehe mein Vorpost
Alles anzeigenHi
Es dauert viel länger. Das ist natürlich ein großes Problem, weil dann die Position auch anders ist.Weiß einer eine Lösung bzw. eine Alternative?
Code:
Spoiler anzeigen
[autoit]Func aufnahme()
[/autoit] [autoit][/autoit] [autoit]
check()
If $maus = 1 Then
Sleep(500)
$zeit = $zeit * 1000
$klick = 0
while 1if _IsPressed(01) Then
[/autoit] [autoit][/autoit] [autoit]
_ArrayAdd($mausarray,"1")
$klick = $klick + 1
Else
_ArrayAdd($mausarray,"0")
EndIfGUICtrlSetData($Label5, $klick)
[/autoit] [autoit][/autoit] [autoit]$zeit = $zeit - 1
[/autoit] [autoit][/autoit] [autoit]
If $zeit = 0 Then ExitLoop
WEnd_ArrayDisplay( $mausarray, "Whole array" )
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]
Na das liegt an Deiner Schleife, da werden viele Dinge ausgeführt die Zeit kosten, und mit
"$zeit = $zeit - 1" wäre es Zufall, wenn der Schleifendurchlauf genau eine Sekunde dauert ....
Mein Tip:
1. Den Check nur einmal nach Verlassen des GUI aufrufen
2. While Schleife, aus der per TimerInit()/TimerDiff eine Funktion aufgerufen wird
3. in der Funktion MouseGetPos aufrufen und Ergebnis speichern
4. in der Funktion Tasten abfragen und Ergebnis speichern
[quote='AciDDreaM',index.php?page=Thread&postID=106726#post106726]Guten Tag ,
ich habe vor gehabt etwas mit Imagesearch zu machen nur findet er das bild bzw den bildausschnitt nicht-,-
Hier mein Code :
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <ImageSearch.au3>
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{F5}" , "start")
HotKeySet("{F6}" , "stop")
while 1
sleep(999999999999999999999)
WEnd
Func start ()
$x1=0
$y1=0
$result = _ImageSearch("Unbenannt.bmp",1,$x1,$y1,0)
if $result=1 Then
MouseMove($x1,$y1,3)
MsgBox(0,"Gefunden","Da ist es ")
Else
msgbox(0,"Nichts gefunden","sry nix gefunden")
EndIf
$result = _ImageSearch("Unbenannt.bmp",0,$x1,$y1,0)
if $result=1 Then
MouseMove($x1,$y1,3)
MsgBox(0,"Gefunden","Da ist es ")
Else
msgbox(0,"Nichts gefunden","sry nix gefunden")
EndIf
EndFunc
func stop()
Exit
EndFunc
MouseMove($x1,$y1,3) --------- so wie ich es verstehe geben $x1,$y1 die Startkoordinaten der Suche an, Deine Maus dürfte also wenn
das Bild gefunden wird auf den Seitenanfang springen, die Koordinaten des "Fundortes" sind wahrscheinlich in $result zu finden ??!!??
Ich habe ne echte Anfängerfrage (taucht nocht nicht mal in der SuFu auf
![]()
habe ich es richtig verstanden, dass beim compilieren die angegebenen UDF´s (include) mit in den Code eingebaut werden, damit auch der die Exe nutzen kann, der kein AutoIt auf dem Rechner hat?
Danke für Hinweise
und vielleicht noch:
$r=_myUDF(5,2,4) ;// Mit angaben .
MsgBox(0,"",$r)
$r=_myUDF(5) ;// Er rechnet einfach +3 , da $ZweiteZahl Standartmässig 3 ist und Operator + .
MsgBox(0,"",$r)
Func _myUDF($ersteZahl,$ZweiteZahl=3,$operator=1) ;// Einfach schon etwas eintragen .
[/autoit][autoit][/autoit][autoit]If $ersteZahl = "" Then --> Errorhandling
[/autoit][autoit][/autoit][autoit]Switch $operator
Case 1
$result=$ersteZahl+$ZweiteZahl
Case 2
$result=$ersteZahl-$ZweiteZahl
Case 3
$result=$ersteZahl*$ZweiteZahl
Case 4
$result=$ersteZahl/$ZweiteZahl
EndSwitch
Return $result
EndFunc
[/quote]
Ich habe zb orginal bild 1000x1250
dann habe ich nen GUI 200x250
pos = MouseGetPos()
$a = $pos[0]/4
$b = $pos[1]/5
$x = $b / 0.20
$y = $a / 0.20
MsgBox(0, "Maus x,y:", $x & "," & $y)
also ich denke da ist ein Denkfehler drin, oder ich verstehe Dein Problem nicht;
also ich würde es so machen
pos = MouseGetPos()
$a = $pos[0] ; xcoord im Gui
$b = $pos[1] ; ycoord im Gui
$faktor_x = $bild_x/$gui_x ; bei Dir 1000/200
$faktor_y = $bild_y/$gui_y ; bei Dir 1250/250
$x = $a * $faktor_x ; xcoord im Bild
$y = $b * $faktor_y ; ycoord im Bild
MsgBox(0, "Maus x,y:", $x & "," & $y)
(ich habs nicht getestet, wenn der Koordinatenursprung nicht unten/links ist musst Du halt umrechnen)
Vielleicht die SuFu und Hilfe richtig verwenden:
Alles anzeigen
Daher stell ich mal meine aktuellste frage:
Ich würde ganz gerne autoIt so Programieren das es mein Browserfenster(MorzillaFirefox) nach Wörtern(zb: Goal) durchsucht.suche mal nach "Firefox"; Du findest sicher einige Threads zum Umgang mit FF, Script versuchen zu verstehen und dann für Dich anpassen
Und das wenn er das wort gefunden hat soll er eine Neue tap aufmachen und zb auf https://autoit.de/www.google.de gehen.
suche mal nach "Internetseite Inhalt"; Threads lesen, Code testen, lernen !!!
.... blos leider finde ich nichts in der AutoIt Hilfe sonnst hätte ich es selber gemacht(habe auch schon gegooglet).
in den Codes aus den gefundenen Seiten den jeweiligen Befehl markieren, F1 drücken, Hilfe durchlesen und Anwendung
des Befehls versuchen zu verstehen .............. und dann hier Fragen stellenMfg AutoIt Anfänger
Hier werden Sie geholfen ![]()
und hier gibts ein eigenen Bereich um Thema FF : Firefox - Automation
Danke für die Tips ..... da hätte ich nie gesucht
außerdem bin ich meist schon stolz wenn ich´s nahezu fehlerfrei anwenden kann ![]()
setze mal den 3. Parameter der FileList-Funktion auf $INTERNET_FLAG_RELOAD = 0x80000000
[autoit]$INTERNET_FLAG_RELOAD = 0x80000000
[/autoit]
$array = _FTPFilesListTo2DArray($FTPServer,0, $INTERNET_FLAG_RELOAD)
![]()
![]()
![]()
![]()
![]()
Du bist mir unheimlich ..... aber das klappt super ..... aber was gibt der Parameter an, ist das eine Reloadzeit ?? und wo findet man sowas??
Hallo an Alle,
ich habe zu Testzwecken folgenden Code geschrieben, der eine Anzahl von Dateien auf einen FTP-Server speichert, und nach jedem Speichern den Ordnerinhalt des Servers ausliest und anzeigt:
#include <Array.au3>
#include <FTP_Ex.au3>
Global $sess = "Test", $serv = "server", $user = "user", $pass = "pass"
Global $FTP, $FTPServer, $FTPDir, $array, $file
$FTP = _FTPOpen($sess)
$FTPServer = _FTPConnect($FTP,$serv,$user,$pass)
$FTPDir = _FtpSetCurrentDir($FTPServer,"/www")
For $i = 1 To 10
$file = "test__" & $i & ".php"
_FTPPutFile($FTPServer, "test.php", $file)
Sleep(5000)
$array = _FTPFilesListTo2DArray($FTPServer,0)
_ArrayDisplay($array)
Next
_FTPClose($FTPServer)
_FTPClose($FTP)
Nun die Fragen:
1. Werden die _FTP - Befehle erst vollständig ausgeführt, bevor das Programmm weiter abläuft, oder sollte man die Ausführung der einzelnen Befehle abfragen (z.B. mit @error), um einen stabilen Ablauf zu gewährleisten??
2. Der neue Ordnerinhalt wird nicht richtig angezeigt, obwohl das Speichern klappt (fast schon eine Antwort auf 1. !!). Erst nach Neustart des Programmes sind dann alle Dateien im Array enthalten. Woran liegt das (Servereinstellung, Zeitfaktor, .....)?
Danke schon mal für Tips
Ergänzung:
Auch folgende Version zeigt kein anderes Ergebnis, die gespeicherten Daten werden erst nach Neustart des Programms angezeigt ????????
Global $FTP, $FTPServer, $FTPDir, $array
For $i = 1 To 10
$FTP = _FTPOpen($sess)
$FTPServer = _FTPConnect($FTP,$serv,$user,$pass)
$FTPDir = _FtpSetCurrentDir($FTPServer,"/www")
$file = "test__" & $i & ".php"
_FTPPutFile($FTPServer, "test.php", $file)
Sleep(5000)
$array = _FTPFilesListTo2DArray($FTPServer,0)
_ArrayDisplay($array, "Versuch ")
_FTPClose($FTPServer)
_FTPClose($FTP)
Next
2. Ergänzung:
Auch das Einfügen einer längeren Wartezeit zwischen den Connects ändert nichts .................
ok ich hab jetz mal
ich brauch nurnochwas womit ich rauskriege welche der comboboxen geändert wurde, damit ich mit der nummer der box auch die in der selben zeile befindliche inputbox bzw checkbox ändern kann.Gruß
Schnitzel
also gemacht habe ich es noch nicht .... aber als Idee .... kannst Du nicht in einem Array die ID´s der Elemente speichern die Du erstellst, und dann das Array abfragen, bzw. die ID´s daraus auslesen und entsprechend mit CASE abfragen ???
die Hilfe hilft:
; Finde einen roten Pixel im Bereich 0,0-20,300.
$coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )
If Not @error Then
MsgBox(0, "X und Y lauten:", $coord[0] & "," & $coord[1])
EndIf
statt MsgBox dann Deinen MouseMove oder besser : MouseClick ( "button" [, x, y [, clicks [, speed ]]] )
Alles anzeigenSpoiler anzeigen
[autoit]Func _markierung()
[/autoit] [autoit][/autoit] [autoit]
$gui_maus = GUICreate("", @DesktopWidth, @DesktopHeight, -1, -1, $WS_POPUP)
WinSetTrans($gui_maus, "", 10)
GUISetState()GUISetCursor(3, 1)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("01") Then ;Wenn die linke Mausstate geklickt wird.
$mausbewegung = MouseGetPos()
ExitLoop
EndIf
WEndWhile 1
[/autoit] [autoit][/autoit] [autoit]
If Not _IsPressed("01") Then ;Wenn die Linke Mausstate losgelassen wird.
$mausbewegungende = MouseGetPos()
ExitLoop
EndIf
WEndGUIDelete($gui_maus)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($b_x_achse, $mausbewegung[0])
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($b_y_achse, $mausbewegung[1])
GUICtrlSetData($b_breite, $mausbewegungende[0] - $mausbewegung[0])
GUICtrlSetData($b_hoehe, $mausbewegungende[1] - $mausbewegung[1])GUISetCursor(2, 0)
[/autoit]
EndFunc
genau so hatte ich es gemeint, ich hätte die While´s zwar verschachtelt, hat aber gleichen Effekt .............
Dieses Thema kenn ich schon. Gibt es da keine Alternative, ich denke das geht doch einfacher.
ich würde die Funktion _IsPressed nehmen;
1. Position erfassen wenn linke Maustaste gedrückt wird
2. Position erfassen wenn linke Maustaste losgelassen wird
3. Ausgabe der beiden Positionen bzw. der daraus errechneten Abmessungen
versuchs doch mal mit einem sauberen File-Open und File-Close nach jedem Zugriff ..........
siehe Hilfe :
Bemerkungen
Eine Datei kann nur entweder im Lese- oder im Schreibmodus geöffnet sein - sie kann nicht in beiden geöffnet sein.
Manche Dateiattribute können ein öffnen einer Datei unmöglich machen.
Wenn eine Datei im Schreibmodus geöffnet wird, wird die Datei erstellt falls sie nicht existiert.
Wenn die Bearbeitung der Datei abgeschlossen ist, sollte die Funktion FileClose aufgerufen werden um die Datei zu schließen.
AutoIt ist keine Programmiersprache, die eine "echte" Kompilierung verwendet. Das Skript bleibt ein Skript und wird zur Laufzeit interpretiert.
Einige grundsätzliche Resourcen (auf die Du gar keinen Einfluss hast) werden daher bereits für den Interpreter benötigt.
Danke, das war mir nicht klar, dann hat sich das geklärt ....
Hi an Alle,
ich meine damit natürlich nicht den physikalischen Verbrauch des RAM
sondern dessen Belegung durch ein AutoIt - Script.
Welche Funktionen sind Speicherfresser, welche "Konstuktionen" sollte man Eurer Meinung/Erfahrung nach vermeiden?
- Anzahl der globalen Variablen
- Anzahl der definierten Hotkeys
- ???
Ich habe mal eben ein Script laufen lassen, das in der Hauptschleife nur ein paar If-Abfragen hat, und war über die Speicherbelegung erstaunt. Reduziert sich das mit dem Compiliern, ich habe den Eindruck es bleibt ohne Effekt, wie kann das sein?
Spoiler anzeigen
02 00 31 2e 33 00 00 1a 00 1d 00 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c 9c 9c 00 00 00 00 00 00 9c ff 9c ff 9c ff 9c ff 0e 00 0f 9c 9c
also wenn die Struktur immer gleich bleibt, dann könnte man mit den String-Funktionen arbeiten, also StringSplit, StringReplace etc.
also Wert einlesen, in Hex übersetzen, an der passenden Stelle Einfügen, Datei speichern
vielleicht so?!?