Schön, dass dir das Forum helfen konnte
Beiträge von Wolfmoon
-
-
Hi,
versuch's mal so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;~ Variable-Namen sind übenommen#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $Input_1, $Input_2, $input_3
_Input_1()#Region --- Input1
[/autoit] [autoit][/autoit] [autoit]
Func _Input_1()
$Input_1 = InputBox("Eingabe", "Input1:", "")
Select
Case @Error = 0 ; OK - Taste gedrückt.
;~ MsgBox (0, "Debugging1", "Okay")
_Input_2()
Case @Error = 1 ; Abbrechen gedrückt
;~ MsgBox (0, "Debugging2", "Okay")
$Input_1 = "Deafult1" ; Hier eine alternative / standartisiert Eingabe setzen
_Input_2()
EndSelect
#EndRegion --- Input1
EndFunc#Region --- Input2
[/autoit] [autoit][/autoit] [autoit]
Func _Input_2()
$Input_2 = InputBox("Eingabe", "Input2:", "")
Select
Case @Error = 0 ; OK - Taste gedrückt.
;~ MsgBox (0, "Debugging3", "Okay")
_Input_3()
Case @Error = 1 ; Abbrechen gedrückt
;~ MsgBox (0, "Debugging4", "Okay")
$Input_2 = "Deafult2" ; Hier eine alternative / standartisiert Eingabe setzen
_Input_3()
EndSelect
#EndRegion --- Input2
EndFunc#Region --- Input3
[/autoit] [autoit][/autoit] [autoit]
Func _Input_3()
$Input_3 = InputBox("Eingabe", "Input3:", "")
Select
Case @Error = 0 ; OK - Taste gedrückt.
;~ MsgBox (0, "Debugging5", "Okay")
_EndOfScript()
Case @Error = 1 ; Abbrechen gedrückt
$Input_3 = "Deafult3" ; Hier eine alternative / standartisiert Eingabe setzen
;~ MsgBox (0, "Debugging6", "Okay")
_EndOfScript()
EndSelect
#EndRegion --- Input3
EndFunc#Region --- EndOfScript
[/autoit] [autoit][/autoit] [autoit][/autoit]
Func _EndOfScript()
;~ MsgBox (0, "Debugging7", "Okay")
IniWrite(@ScriptDir & "\Test.ini", "Sektion 1", "Input 1", $input_1)
IniWrite(@ScriptDir & "\Test.ini", "Sektion 2", "Input 2", $input_2)
IniWrite(@ScriptDir & "\Test.ini", "Sektion 3", "Input 3", $input_3)
;~ MsgBox (0, "Debugging8", "Okay")
Sleep (500)
Exit
EndFunc
#endregion --- EndOfScriptHabe die Pfade der Ini-Datei zum Testen geändert. Kannst du ja wieder anpassen.
Das gleiche gilt natürlich für die "Defaults"Die auskommentierten MsgBoxen kannste natürlich löschen.
-
-
Wenn Du die GUI zentrieren willst reicht es bei GUICreate("Titel", "width", "height", "left", "top") bei "left" und "top" -1 einzutragen.
Sonst siehts aber ganz gut aus.Oder man kann, solange man die anderen Parameter nicht benötigt, diese beiden Angaben auch einfach weglassen.
Danke, dass wusste ich noch nicht
@ BIOBAUA:
Danke für deine Version! Die GUI ist direkt übersichtlicher als meine.
Die Umsetzung ist auf jeden Fall leichter, als bei meinem Script.
Für einige Fälle ist das mit dem "Klicken" jedoch weniger geeignet.Durch das "Klicken" entfällt doch eigentlich die Angabe zur zeitlichen
Verzögerung, oder nicht?@ James:
Auch an dich danke für deine Version. Auf die Idee, die Positionen gleich
zu einem Befehl zusammenzufügen, bin ich letzte Nacht gar nicht gekommen .Ich glaube, ich werde in Zukunft dein Script verwenden, weil man nach jedem
Erfassen die Verzögerung nochmals ändern kann.Ich habe aber trotzdem noch was dran geändert:
Kleine Änderung
[autoit]
[/autoit]
Do
Switch GUIGetMsg()
Case -3, $Button2
ExitLoop
Case $Button1
GUISetState(@SW_HIDE, $Form) ; GUI ausblenden, damit der gesamte Bildschirm zur Verfügung steht
$Delay = Number(GUICtrlRead($Input)) * 1000
If ($Delay = 0) Then $Delay = 10000 ; Standard: 10 Sekunden
Sleep($Delay) ; dem Benutzer Zeit geben
$Pos = MouseGetPos()
; man könnte die Position an dieser Stelle auch in einer INI speichern,
; aber da du das ja sowieso für Automatisierungen verwenden willst,
; wird an dieser Stelle gleich ein funktionierendes Skript erstellt.
; Speichern kannst du es, indem du es einfach kopierst.
; Ich wollte nur schnell eine etwas kürzere Lösung präsentieren.
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "X", $Pos[0])
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "Y", $Pos[1])
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'MouseClick("left", ' & $Pos[0] & ', ' & $Pos[1] & ') ; ' & $Counter & @CRLF) ; etwas unsauber - der Text wird an den schon vorhandenen Text angehängt
$Counter += 1
GUISetState(@SW_SHOW, $Form) ; GUI wieder einblenden.
EndSwitch
Until FalseWenn es euch beiden Recht ist, nehme ich eure Versionen in den
Startpost mit auf. Natürlich mit Credits an euch . -
Beschreibung von Koordinator v1.0
Ich habe mir mal ein kleines Hilfsprogramm zum Erfassen von MausPositionen geschrieben.
Das hat den einfachen Grund, dass es mich beim schreiben von Automatisierungs-Scripten bisher
immer genervt hat, den Courser von "AutoIT Window Info" hin- und herzuziehen.Ich weis, dass man dafür nicht unbedingt eine GUI gebraucht hätte, aber bisher hatte ich
noch keine "Gelegenheit" mich mit GUI's auseinander zu setzen. Also habe ich es mit GUI gemacht.Zur Funktion des Scripts:
Beim Starten prüft es, ob die "Optionen.ini" ( hier sind die Einstellungen gespeichert )
vorhanden ist. Ist dies nicht der Fall, so empfiehlt das Programm die Einstellungen durchzugehen.In den Einstellungen ist dann gespeichert, wie viele Positionen der Maus man erfassen möchte und welche Verzögerung
zwischen den Erfassungen liegen soll. Die Einstellungen kann man später wieder ändern.Zur eigentlichen Ausführung:
Nach dem Erfassen einer Position geht eine MsgBox auf, die genau das bestätigt.
Diese kann man per Leer- oder Entertaste schliesen.
Die Positionen werden in einer "Log.ini " gespeichert. Diese wird beim Ausführen des Scripts gelöscht, um
zu vermeiden, dass alte Ergebnisse in der aktuellen "Log.ini " stehen.Über Feedback, gerade was man einfacher / schneller machen kann, würde ich mich freuen.
Beschreibung von Koordinator v2.0
Credits gehen an BIOBAUA
Die Umsetzung von BIOBAUA ist anschaulicher und übersichtlicher als meine Ursprüngliche.
Auch die Gliederung in den .INI - Dateien ist gelungener.Beschreibung von Koordinator v3.0
Credits gehen an JamesDie Version von James ist vom Aufbau her minimalistischer und das Script ist um einiges kürzer.
Es gibt die Mauspositionen als kopierbaren Befehl "MouseClick" aus. Auch die Zeitliche Verzögerung
kann nach jedem Klick geändert werden.Beschreibung von Koordinator v3.1
Ich habe ein paar Kleinigkeiten an dem Script von James geändert,
damit es für mich und meine Anwendungsfälle passt.
Bis auf die Änderungen entspricht es v3.0 .
=> Während der Verzögerung und Erfassung ist die GUI ausgeblendet.
=> Standartverzögerung auf 5 Sekunden gesetzt.Scripte
Koordinator v1.0
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 0) ; Option:Variablen müssen deklariert werden? ( 1 = Ja | 0 = Nein ).
Dim $iCounter = 0, $MainGuiDelay = 0, $MainGuiQuantity = 0 ; Variablen vordeklariert, weil diese aus .INI ausgelesen werden.#region Variablen der 'MainGUI'
[/autoit] [autoit][/autoit] [autoit]
Dim $MainGuiWidth = 300 ; Bestimmt die Fensterbreite
Dim $MainGuiHeight = 220 ; Bestimmt die Fensterhöhe
Dim $XMainGuiPOS = @DesktopWidth / 2 - $MainGuiWidth / 2 ; Bestimmt die X-Position des Fensters. Durch die Formel ist es mittig vom Bildschirm
Dim $YMainGuiPOS = @DesktopHeight / 2 - $MainGuiHeight / 2 ; Bestimmt die Y-Position des Fensters. Durch die Formel ist es mittig vom Bildschirm
#endregion Variablen der 'MainGUI'#region Variablen der 'OptionGUI'
[/autoit] [autoit][/autoit] [autoit]
Dim $OptionGuiWidth = 392 ; Bestimmt die Fensterbreite
Dim $OptionGuiHeight = 138 ; Bestimmt die Fensterhöhe
Dim $XOptionGuiPOS = @DesktopWidth / 2 - $MainGuiWidth / 2 ; Bestimmt die X-Position des Fensters. Durch die Formel ist es mittig vom Bildschirm
Dim $YOptionGuiPOS = @DesktopHeight / 2 - $MainGuiHeight / 2 ; Bestimmt die Y-Position des Fensters. Durch die Formel ist es mittig vom Bildschirm
#endregion Variablen der 'OptionGUI'If FileExists(@ScriptDir & "\Resources\Options.ini") Then ; Frägt ab, ob die 'Options.ini' vorhanden ist, da diese benötigt wird.
[/autoit] [autoit][/autoit] [autoit]
_MainGUI() ; Wenn die 'Options.ini' vorhanden ist, wird man zu 'MainGUI' verwiesen...
Else
_ErstEinstellung() ; ... andernfalls läuft man die Ersteinstellung durch, um die später benötigte 'Options.ini' zu erzeugen.
EndIf ;==> FileExists zu 'Options.ini'Func _MainGUI() ; Beinhaltet die 'MainGUI' und die Hauptschleife.
[/autoit] [autoit][/autoit] [autoit]
$MainGUI = GUICreate("Koordinator", $MainGuiWidth, $MainGuiHeight, $XMainGuiPOS, $YMainGuiPOS)
$MainGuiLabIinf = GUICtrlCreateLabel("Dies ist ein Hilfsprogramm zum erfassen von mehreren Mauspositionen. Wenn sie den Start-Knopf drücken, startet die Erfassung mit den letzten Einstellungen.", 20, 20, 260, 40, 0x0000)
$MainGuiBtnStart = GUICtrlCreateButton("Start", 113, 80, 75, 25)
$MainGuiBtnOption = GUICtrlCreateButton("Optionen", 113, 125, 75, 25)
$MainGuiBtnAbort = GUICtrlCreateButton("Abbrechen", 113, 170, 75, 25)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $MainGuiBtnStart
$MainGuiQuantity = IniRead(@ScriptDir & "\Resources\Options.ini", "Optionen", "Anzahl", "") ; Anzahl der Wiederholungen aus 'Options.ini' auslesen.
$MainGuiDelay = IniRead(@ScriptDir & "\Resources\Options.ini", "Optionen", "Verzögerung", "") ; Verzögerung zwischen den Positionserfassungen aus 'Options.ini' auslesen.
GUISetState(@SW_HIDE) ; 'MainGUI' ausblenden
$MainGuiDelay = $MainGuiDelay * 1000 ; Die Verzögerung wird von Sekunden in Millisekunden umgewandelt / umgerechnet.
_Erfassung() ; Die eigentliche Funktion zur Erfassung starten.
Case $MainGuiBtnOption
GUISetState(@SW_HIDE) ; 'MainGUI' ausblenden
_OptionGUI() ; Funktion der Einstellungen aufrufen
Case $MainGuiBtnAbort
Exit
EndSwitch
WEnd
EndFunc ;==>_MainGUIFunc _OptionGUI() ; Fenster für die Einstellungen des Programms.
[/autoit] [autoit][/autoit] [autoit]
$OptionGUI = GUICreate("Optionen", $OptionGuiWidth, $OptionGuiHeight, $XOptionGuiPOS, $YOptionGuiPOS)
$OptionGuiLabQuantity = GUICtrlCreateLabel("Anzahl der zu erfassenden Mauspositionen:", 16, 19, 209, 17)
$OptionGuiLabDelay = GUICtrlCreateLabel("Zeitabstand zwischen den einzelnen Erfassungen:", 16, 59, 241, 17)
$OptionGuiInQuantity = GUICtrlCreateInput("", 304, 16, 65, 21)
$OptionGuiInDelay = GUICtrlCreateInput("Sekunden", 304, 56, 65, 21)
$OptionGuiBtnOkay = GUICtrlCreateButton("Okay", 80, 96, 75, 25)
$OptionGuiBtnAbort = GUICtrlCreateButton("Abbrechen", 240, 96, 75, 25)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitCase $OptionGuiBtnOkay
[/autoit] [autoit][/autoit] [autoit]
$OptionGuiQuantity = GUICtrlRead($OptionGuiInQuantity) ; Lies die eingegebene Anzahl der Wiederholungen aus.
$OptionGuiDelay = GUICtrlRead($OptionGuiInDelay) ; Lies die eingegebene Verzögerung der Erfassungen aus.
IniWrite(@ScriptDir & "\Resources\Options.ini", "Optionen", "Anzahl", $OptionGuiQuantity) ; Schreibt die Anzahl der Wiederholungen in die 'Options.ini'.
IniWrite(@ScriptDir & "\Resources\Options.ini", "Optionen", "Verzögerung", $OptionGuiDelay) ; Schreibt die Verzögerung der Erfassungen in die 'Options.ini'.
GUISetState(@SW_HIDE) ; 'OptionGUI' ausblenden und...
_MainGUI() ; ... zur 'MainGUI' wechseln / zurückkehren.
Case $OptionGuiBtnAbort
GUISetState(@SW_HIDE)
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(52, "Sicher?", "Ein Abbruch hätte aus Sicherheitsgründen das Beenden des" & @CRLF & "Programms zu folge!" & @CRLF & @CRLF & "Sind Sie sicher, dass Sie die Einstellungen abbrechen wollen?")
; >> Es wird per MsgBox abefragt, ob man sich sicher ist, dass Programm zu beenden. Durch das Auslesen des Return kann das Programm 'reagieren'.
Select
Case $iMsgBoxAnswer = 6 ; Ja -> schließen.
Exit
Case $iMsgBoxAnswer = 7 ; Nein -> zur GUI-Funktion '_OptionGui' zurückspringen.
_OptionGui()
EndSelect
EndSwitch
WEndEndFunc ;==>_OptionGUI
[/autoit] [autoit][/autoit] [autoit]Func _Erfassung() ; Die eigentliche Erfassung der Mauspositionen.
[/autoit] [autoit][/autoit] [autoit]
FileDelete(@ScriptDir & "\Log.ini") ; Falls eine 'Log.ini' vorhanden ist, wird diese gelöscht. Dies geschieht, damit bei einem niedriegem Zähler nicht noch alte Werte vorhanden wären.
While $iCounter <> $MainGuiQuantity ; Der Zähler wird mit der Gesamtzahl der Durchgänge verglichen.
$iCounter += 1 ; Dient der Auflistung der Positionen in der 'Log.ini' und der While-Schleife.
Sleep($MainGuiDelay) ; Verzögert, damit man die Maus an die nächste Position bewegen kann.
$MousePos = MouseGetPos() ; Schreibt die aktuelle Mausposition in ein Array
IniWrite(@ScriptDir & "\Log.ini", $iCounter & ". Erfassung", "X-Position", " " & $MousePos[0]) ; Schreibt die X-Position der Maus mit dem Zähler in die 'Log.ini'. " " dient dazu, dass man die Koordinate per Doppelklick makieren kann.
IniWrite(@ScriptDir & "\Log.ini", $iCounter & ". Erfassung", "Y-Position", " " & $MousePos[1]) ; Schreibt die Y-Position der Maus mit dem Zähler in die 'Log.ini'. " " dient dazu, dass man die Koordinate per Doppelklick makieren kann.
MsgBox(0, $iCounter & ".Position", "Position erfasst!") ; Gibt eine kurze Rückmeldung, dass eine Position erfasst wurde. Kann mit Leertaste / Entertaste bestätigt werden.
WEnd
MsgBox(0, "Fertig!", "Die angegebene Anzahl an Erfassungen wurde erreicht!") ; Gibt eine kurze Rückmeldung, dass die festgelegte Anzahl an Erfassungen erreicht wurde
Exit
EndFunc ;==>_ErfassungFunc _ErstEinstellung() ; Funktion zum ersten Einstellen des Programms
[/autoit] [autoit][/autoit] [autoit]
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(65, "Erste Verwendung", "Ich habe festgestellt, dass dies Ihre erste Verwendung vom" & @CRLF & "Koordinator ist. Aus diesem Grund öffne ich Ihnen erstmal das" & @CRLF & "'Optionen'-Fenster damit Sie die Einstellungen festlegen können." & @CRLF & @CRLF & "Durch betätigen des 'Abbrechen'-Buttons können Sie das Programm" & @CRLF & "beenden." & @CRLF & @CRLF & "MfG," & @CRLF & " Wolf-XIII")
; >> Es wird per MsgBox mitgeteilt, dass zum ersten Programmstart die Einstellungen festgelegt werden müssen.
Select
Case $iMsgBoxAnswer = 1 ; OK
DirCreate(@ScriptDir & "\Resources")
_OptionGui() ; Verweist auf die GUI zum Festlegen der Einstellung.
Case $iMsgBoxAnswer = 2 ; Abbruch
Exit
EndSelectEndFunc ;==>_ErstEinstellung
[/autoit]Koordinator v2.0
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#region ;Includes
#include <Date.au3>
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#endregion ;Includes#region ;Hotkeys/Optionen
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{ESC}", "_kill")
Opt("MustDeclareVars", 0)
TraySetClick(0)
#endregion ;Hotkeys/Optionen#region ;Variablen
[/autoit] [autoit][/autoit] [autoit]
Global Const $dir = (@ScriptDir & "\")
Global Const $prog = (@ScriptName)
Global Const $config = ("MultibleMousePos_v2.config")
Global Const $log = ("MultibleMousePos_v2.log")
$anzahl = ("")
$abstand = ("")
$count = ("")
$MPos = ("")
$record = ("")
$fc = ("")
#endregion ;Variablen#region ;GUI1
[/autoit] [autoit][/autoit] [autoit]
$GUI1 = GUICreate("Koordinator_v2 @Biobaua", 400, 145, -1, -1)
GUISetCursor(2, 1)
GUISetFont(10, "", "", "Calibri")
GUISetBkColor(0xC3C3C3)$Label1 = GUICtrlCreateLabel(" Anzahl (Klick's): ", 25, 25, 140, 20, 0x0200)
[/autoit] [autoit][/autoit] [autoit]
$Label2 = GUICtrlCreateLabel(" Zeitabstand (Sekunden): ", 25, 50, 140, 20, 0x0200)
$Input1 = GUICtrlCreateInput(IniRead($dir & $config, "CONFIG", "ANZAHL", ""), 170, 25, 205, 20, 0x2100)
$Input2 = GUICtrlCreateInput(IniRead($dir & $config, "CONFIG", "ABSTAND", ""), 170, 50, 205, 20, 0x2100)
$Button1 = GUICtrlCreateButton("Starten", 25, 100, 75, 25, 0x8000)
$Button2 = GUICtrlCreateButton("Log löschen", 100, 100, 100, 25, 0x8000)
$Button3 = GUICtrlCreateButton("Config löschen", 200, 100, 100, 25, 0x8000)
$Button4 = GUICtrlCreateButton("Speichern", 300, 100, 75, 25, 0x8000)GUICtrlSetCursor($Input1, 5)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetCursor($Input2, 5)
GUICtrlSetBkColor($Label1, 0xA3A3A3)
GUICtrlSetBkColor($Label2, 0xA3A3A3)
GUICtrlSetBkColor($Button1, 0xA3A3A3)
GUICtrlSetBkColor($Button2, 0xA3A3A3)
GUICtrlSetBkColor($Button3, 0xA3A3A3)
GUICtrlSetBkColor($Button4, 0xA3A3A3)GUISetState(@SW_SHOW, $GUI1)
[/autoit] [autoit][/autoit] [autoit]
WinSetOnTop($GUI1, "", 1)
#endregion ;GUI1_StartUpCheck() ;Überprüft ob programm max 1x ausgeführt wird
[/autoit] [autoit][/autoit] [autoit]#region ;Schleife
[/autoit] [autoit][/autoit] [autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;Programm schließen
_kill()
Case $Label1 ;Fokus auf Input1
ControlClick("", "", $Input1)
Case $Label2 ;Fokus auf Input2
ControlClick("", "", $Input2)
Case $Button1 ;Aufnahme starten
_Start(GUICtrlRead($Input1), GUICtrlRead($Input2) * 1000)
Case $Button2 ;LOG Löschen/öffnen
If _IsPressed("11", "user32.dll") Then
_Open($dir & $log)
Else
_Delete($dir & $log)
EndIf
Case $Button3 ;CONFIG Löschen/öffnen
If _IsPressed("11", "user32.dll") Then
_Open($dir & $config)
Else
_Delete($dir & $config)
GUICtrlSetData($Input1, "")
GUICtrlSetData($Input2, "")
EndIf
Case $Button4 ;Config speichern
_SaveConfig(GUICtrlRead($Input1), GUICtrlRead($Input2))
EndSwitch_Check() ;Überprüft GUI Buttons
[/autoit] [autoit][/autoit] [autoit]
WEnd
#endregion ;Schleife#region ;Funktionen
[/autoit] [autoit][/autoit] [autoit]
Func _StartUpCheck() ;OK
If _Singleton($prog, 1) = 0 Then ;OK
MsgBox(262160, "Fehler!", $prog & " wird bereits ausgeführt!")
_kill()
EndIf
EndFunc ;==>_StartUpCheckFunc _Start($anzahl, $abstand) ;
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_DISABLE, $GUI1)
GUICtrlSetBkColor($Input1, 0xFFFFFF)
GUICtrlSetBkColor($Input2, 0xFFFFFF)If $anzahl = ("") Or $anzahl = ("0") Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Input1, 0xFF0000)
GUISetState(@SW_ENABLE, $GUI1)
ControlClick("", "", $Input1)
_WriteLog("Anzahl ist leer")
Return
Else
GUICtrlSetBkColor($Input1, 0x00FF00)
EndIfIf $abstand = ("") Or $abstand = ("0") Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Input2, 0xFF0000)
GUISetState(@SW_ENABLE, $GUI1)
ControlClick("", "", $Input2)
_WriteLog("Abstand ist leer")
Return
Else
GUICtrlSetBkColor($Input2, 0x00FF00)
EndIf$fc = 0
[/autoit] [autoit][/autoit] [autoit]
Do
$fc += 1
Until Not FileExists("Aufnahme_" & $fc & ".ini")
$record = ("Aufnahme_" & $fc & ".ini")_WriteLog("=====[Aufnahme gestartet]=====")
[/autoit] [autoit][/autoit] [autoit]
_WriteLog("Datei: " & $record)
_WriteLog("Anzahl: " & $anzahl)
_WriteLog("Abstand: " & $abstand)IniWrite($dir & $record, "Info", "Datei", $record)
[/autoit] [autoit][/autoit] [autoit]
IniWrite($dir & $record, "Info", "Anzahl", $anzahl)
IniWrite($dir & $record, "Info", "Abstand", $abstand)HotKeySet("{ESC}")
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $GUI1)
ToolTip("")
MsgBox(262208, "Wichtig!", "Aufnahme wird nach dieser Meldung gestartet" & @CRLF & "ESC zum abbrechen der Aufzeichung!")$count = ("0")
[/autoit] [autoit][/autoit] [autoit]
Do
$MPos = MouseGetPos()
ToolTip("Klick: " & $count & "/" & $anzahl & " | X: " & $MPos[0] & " Y: " & $MPos[1])If _IsPressed("01", "user32.dll") Then ;Links klick
[/autoit] [autoit][/autoit] [autoit]
$count += 1
IniWrite($dir & $record, "Aufnahme" & $count, "Klick", "Links")
IniWrite($dir & $record, "Aufnahme" & $count, "X", $MPos[0])
IniWrite($dir & $record, "Aufnahme" & $count, "Y", $MPos[1])
_WriteLog("Aufnahme" & $count)
_WriteLog("Links")
_WriteLog("|X= " & $MPos[0])
_WriteLog("|Y= " & $MPos[1])
Do
Sleep(10)
Until Not _IsPressed("01", "user32.dll")
EndIfIf _IsPressed("02", "user32.dll") Then ;Rechts klick
[/autoit] [autoit][/autoit] [autoit]
$count += 1
IniWrite($dir & $record, "Aufnahme" & $count, "Klick", "Rechts")
IniWrite($dir & $record, "Aufnahme" & $count, "X", $MPos[0])
IniWrite($dir & $record, "Aufnahme" & $count, "Y", $MPos[1])
_WriteLog("Aufnahme" & $count)
_WriteLog("Rechts")
_WriteLog("|X= " & $MPos[0])
_WriteLog("|Y= " & $MPos[1])
Do
Sleep(10)
Until Not _IsPressed("02", "user32.dll")
EndIfIf _IsPressed("1B", "user32.dll") Then ;ESC
[/autoit] [autoit][/autoit] [autoit]
Do
Sleep(10)
Until Not _IsPressed("1B", "user32.dll")ExitLoop
[/autoit] [autoit][/autoit] [autoit]
EndIfSleep(10)
[/autoit] [autoit][/autoit] [autoit]
Until $count = $anzahl_WriteLog("=====[Aufnahme beendet]=====")
[/autoit] [autoit][/autoit] [autoit]ToolTip("")
[/autoit] [autoit][/autoit] [autoit]
If $count = $anzahl Then
MsgBox(262208, "Wichtig!", "Aufzeichnung abgeschlossen!")
Else
MsgBox(262160, "Wichtig!", "Aufzeichung abgebrochen!")
EndIfGUISetState(@SW_SHOW, $GUI1)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{ESC}", "_kill")GUICtrlSetBkColor($Input1, 0xFFFFFF)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Input2, 0xFFFFFF)
GUISetState(@SW_ENABLE, $GUI1)
EndFunc ;==>_StartFunc _SaveConfig($anzahl, $abstand) ;OK
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_DISABLE, $GUI1)
GUICtrlSetBkColor($Input1, 0xFFFFFF)
GUICtrlSetBkColor($Input2, 0xFFFFFF)If $anzahl = ("") Or $anzahl = ("0") Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Input1, 0xFF0000)
GUISetState(@SW_ENABLE, $GUI1)
ControlClick("", "", $Input1)
_WriteLog("Anzahl ist leer")
Return
Else
GUICtrlSetBkColor($Input1, 0x00FF00)
EndIfIf $abstand = ("") Or $abstand = ("0") Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Input2, 0xFF0000)
GUISetState(@SW_ENABLE, $GUI1)
ControlClick("", "", $Input2)
_WriteLog("Abstand ist leer")
Return
Else
GUICtrlSetBkColor($Input2, 0x00FF00)
EndIfIniWrite($dir & $config, "CONFIG", "ANZAHL", $anzahl)
[/autoit] [autoit][/autoit] [autoit]
IniWrite($dir & $config, "CONFIG", "ABSTAND", $abstand)
_WriteLog("Konfiguration gespeichert!")
GUICtrlSetBkColor($Input1, 0xFFFFFF)
GUICtrlSetBkColor($Input2, 0xFFFFFF)
GUISetState(@SW_ENABLE, $GUI1)
EndFunc ;==>_SaveConfigFunc _Check() ;OK
[/autoit] [autoit][/autoit] [autoit]
;Sperrt und entsperrt Button2
If FileExists($dir & $log) And GUICtrlGetState($Button2) = ("144") Then
GUICtrlSetState($Button2, $GUI_ENABLE)
ElseIf Not FileExists($dir & $log) And GUICtrlGetState($Button2) = ("80") Then
GUICtrlSetState($Button2, $GUI_DISABLE)
EndIf;Sperrt und entsperrt Button3
[/autoit] [autoit][/autoit] [autoit]
If FileExists($dir & $config) And GUICtrlGetState($Button3) = ("144") Then
GUICtrlSetState($Button3, $GUI_ENABLE)
ElseIf Not FileExists($dir & $config) And GUICtrlGetState($Button3) = ("80") Then
GUICtrlSetState($Button3, $GUI_DISABLE)
EndIf;Änder Button2 Text
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("11", "user32.dll") And GUICtrlRead($Button2) = ("Log löschen") And GUICtrlGetState($Button2) = ("80") Then
GUICtrlSetData($Button2, "Log öffnen")
ElseIf Not _IsPressed("11", "user32.dll") And GUICtrlRead($Button2) = ("Log öffnen") Then
GUICtrlSetData($Button2, "Log löschen")
EndIf;Änder Button3 Text
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("11", "user32.dll") And GUICtrlRead($Button3) = ("Config löschen") And GUICtrlGetState($Button3) = ("80") Then
GUICtrlSetData($Button3, "Config öffnen")
ElseIf Not _IsPressed("11", "user32.dll") And GUICtrlRead($Button3) = ("Config öffnen") Then
GUICtrlSetData($Button3, "Config löschen")
EndIf
EndFunc ;==>_CheckFunc _Open($data) ;OK
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_DISABLE, $GUI1)
If FileExists($data) Then ShellExecuteWait("C:\Windows\system32\notepad.exe", $data)
GUISetState(@SW_ENABLE, $GUI1)
EndFunc ;==>_OpenFunc _Delete($data) ;OK
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_DISABLE, $GUI1)
If FileExists($data) Then FileDelete($data)
GUISetState(@SW_ENABLE, $GUI1)
EndFunc ;==>_DeleteFunc _WriteLog($text) ;OK
[/autoit] [autoit][/autoit] [autoit]
FileWriteLine($dir & $log, _NowDate() & "|" & _NowTime(5) & " > " & $text)
EndFunc ;==>_WriteLogFunc _kill() ;OK
[/autoit]
Exit
EndFunc ;==>_kill
#endregion ;FunktionenKoordinator v3.0
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
#include <WindowsConstants.au3>
#include <EditConstants.au3>Local $Form, $Edit, $Input, $Button1, $Button2, $Counter = 1, $Delay, $Pos ; man sollte seine Controls eigentlich sinnvoll benennen, aber das ist ja nur ein kleiner Test
[/autoit] [autoit][/autoit] [autoit]
$Form = GUICreate("MouseGetPos", 400, 300)
$Edit = GUICtrlCreateEdit("", 20, 20, 360, 230, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY, $WS_VSCROLL)) ; der Benutzer darf den Inhalt des Edits nicht verändern
GUICtrlSetFont($Edit, 10, 1000, 0, "Courier New") ; sieht besser aus
GUICtrlSetBkColor($Edit, 0xFFFFFF) ; sieht besser aus
GUICtrlSetColor($Edit, 0x7777777) ; sieht besser aus
$Input = GUICtrlCreateInput("", 20, 260, 120, 20, $ES_NUMBER) ; nur für Zahlen
GUICtrlSendMsg($Input, $EM_SETCUEBANNER, 0, "Wartezeit in Sekunden") ; <- muss man am Anfang nicht verstehen, ich hatte nur keinen Platz für eine Beschreibung über dem Input
$Button1 = GUICtrlCreateButton("nächste Position hinzufügen", 150, 260, 160, 20)
$Button2 = GUICtrlCreateButton("Beenden", 320, 260, 60, 20)
GUISetState(@SW_SHOW, $Form)Do
[/autoit]
Switch GUIGetMsg()
Case -3, $Button2
ExitLoop
Case $Button1
$Delay = Number(GUICtrlRead($Input)) * 1000
If ($Delay = 0) Then $Delay = 10000 ; Standard: 10 Sekunden
Sleep($Delay) ; dem Benutzer Zeit geben
$Pos = MouseGetPos()
; man könnte die Position an dieser Stelle auch in einer INI speichern,
; aber da du das ja sowieso für Automatisierungen verwenden willst,
; wird an dieser Stelle gleich ein funktionierendes Skript erstellt.
; Speichern kannst du es, indem du es einfach kopierst.
; Ich wollte nur schnell eine etwas kürzere Lösung präsentieren.
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "X", $Pos[0])
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "Y", $Pos[1])
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'MouseClick("left", ' & $Pos[0] & ', ' & $Pos[1] & ') ; ' & $Counter & @CRLF) ; etwas unsauber - der Text wird an den schon vorhandenen Text angehängt
$Counter += 1
EndSwitch
Until FalseKoordinator v3.1
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
#include <WindowsConstants.au3>
#include <EditConstants.au3>Local $Form, $Edit, $Input, $Button1, $Button2, $Counter = 1, $Delay, $Pos ; man sollte seine Controls eigentlich sinnvoll benennen, aber das ist ja nur ein kleiner Test
[/autoit] [autoit][/autoit] [autoit]
$Form = GUICreate("MouseGetPos", 400, 300)
$Edit = GUICtrlCreateEdit("", 20, 20, 360, 230, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY, $WS_VSCROLL)) ; der Benutzer darf den Inhalt des Edits nicht verändern
GUICtrlSetFont($Edit, 10, 1000, 0, "Courier New") ; sieht besser aus
GUICtrlSetBkColor($Edit, 0xFFFFFF) ; sieht besser aus
GUICtrlSetColor($Edit, 0x7777777) ; sieht besser aus
$Input = GUICtrlCreateInput("", 20, 260, 120, 20, $ES_NUMBER) ; nur für Zahlen
GUICtrlSendMsg($Input, $EM_SETCUEBANNER, 0, "Wartezeit in Sekunden") ; <- muss man am Anfang nicht verstehen, ich hatte nur keinen Platz für eine Beschreibung über dem Input
$Button1 = GUICtrlCreateButton("nächste Position hinzufügen", 150, 260, 160, 20)
$Button2 = GUICtrlCreateButton("Beenden", 320, 260, 60, 20)
GUISetState(@SW_SHOW, $Form)Do
[/autoit]
Switch GUIGetMsg()
Case -3, $Button2
ExitLoop
Case $Button1
GUISetState(@SW_HIDE, $Form) ; GUI ausblenden, damit der gesamte Bildschirm zur Verfügung steht
$Delay = Number(GUICtrlRead($Input)) * 1000
If ($Delay = 0) Then $Delay = 5000 ; Standard: 10 Sekunden
Sleep($Delay) ; dem Benutzer Zeit geben
$Pos = MouseGetPos()
; man könnte die Position an dieser Stelle auch in einer INI speichern,
; aber da du das ja sowieso für Automatisierungen verwenden willst,
; wird an dieser Stelle gleich ein funktionierendes Skript erstellt.
; Speichern kannst du es, indem du es einfach kopierst.
; Ich wollte nur schnell eine etwas kürzere Lösung präsentieren.
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "X", $Pos[0])
;~ IniWrite("Log.ini", "Erfassung" & $Counter, "Y", $Pos[1])
GUICtrlSetData($Edit, GUICtrlRead($Edit) & 'MouseClick("left", ' & $Pos[0] & ', ' & $Pos[1] & ') ; ' & $Counter & @CRLF) ; etwas unsauber - der Text wird an den schon vorhandenen Text angehängt
$Counter += 1
GUISetState(@SW_SHOW, $Form) ; GUI wieder einblenden.
EndSwitch
Until FalseChangeLog
PS: Es ist das erste Script, dass ich veröffentliche :pinch: