Zitatdann schau einmal in Ordner Extras\Exe2Aut
Hab ich doch^^. Und dort ist kein Decompiler weit und breit.
Zitatdann schau einmal in Ordner Extras\Exe2Aut
Hab ich doch^^. Und dort ist kein Decompiler weit und breit.
ZitatKann man denn eine FUNKTION, meinetwegen GUICtrlRead so verschlüsseln, oder würde das auch nicht gehen ?!?!?
Man kann auch Execute verwenden um die eigentliche Funktion zu verschleiern, man muss allerdings immer beachten, dass das irgendwann die Geschwindigkeit des Scripts beeinträchtigt.
Ich finde bei meiner AutoIt Installation keine exe2aut und soweit ich weiß wird decompilen seit langem nicht mehr unterstützt.
Man könnte es mit irgendeiner (guten
) Software für Texterkennung (OCR) testen. Und danach noch nach bestimmten Vorgaben mit Cheat Engine.
Wie z.B. bei Text Captchas: Es darf nur nach dem aktuellen Captcha Text in CheatEngine gesucht werden, und falls sich mittels dieser Adresse immer wieder der Captcha Text ermitteln lässt ist das Script nicht Cheat Engine sicher.
Du willst mir weismachen, dass das hier nicht funktioniert?
HotKeySet ( "{a}" , "start" )
[/autoit]Ich würde sagen wenn man speziell bei Text Captchas mit Cheat Engine nach dem dargestellten Text sucht darf man nichts finden oder eben nur Müll
.
Ich denke, dass nur eine absolute Minderheit überhaupt weiß was Base Pointer etc. sind. ![]()
ZitatUnd ich kann dieses " For $i = 1 to 1 Step 1" Weglassen?
Ließ dir den Beitrag von Stinger2k mal durch, dann müsstest du das eigentlich wissen ![]()
Dann frag doch einfach danach wie du einen Prozess auf alle Prozessoren auslagern kannst.
Entweder war das jetzt von dir unglücklich formuliert oder du denkst dir das nur aus. ![]()
Aber wenn ich einmal mit Cheat Engine die Adresse der Variable hab, könnte ich doch theoretisch immer wieder ihren Wert auslesen. Ich habe das mal mit meinem alten Script versucht und geschafft, insofern ergibt das doch durchaus Sinn oder?
Zu welchem Zweck ist das bitte? Wenn es das ist was ich vermute wird dir hier wahrscheinlich keiner helfen.
Darum weise ich dich jetzt schon mal auf die Forenregeln hin.
Ich schicke mal meine Version ein, ich denke ich habe alle Bugs beseitigt.
Cheat Engine ist ein hartnäckiger Gegner was diesen Wettbewerb betrifft
Deswegen wünsche ich allen anderen viel Glück bei ihren Projekten.
Wollte noch mal ein wenig angeben und hab deswegen noch ein Bild angehängt ![]()
Bitte schreib doch AutoIt Quelltext in Zukunft in ["autoit"]["/autoit"] brackets (ohne "").
Zu deinem Problem:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
Global $Secs, $Mins, $Time = 0, $Timer = -1, $Hours
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 154, 161, 210, 192)
$Input1 = GUICtrlCreateInput("min", 12, 16, 129, 21)
$Input2 = GUICtrlCreateInput("sec", 12, 48, 129, 21)
$START = GUICtrlCreateButton("GO", 8, 132, 137, 33)
$label = GUICtrlCreateLabel("0:0:0", 64, 96, 36, 17)
GUISetState()
AdlibRegister("Update", 100)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $START
$Timer = TimerInit()
EndSwitch
WEnd
Func Update()
If $Timer <> -1 Then
$Time = TimerDiff($Timer)
_TicksToTime($Time, $Hours, $Mins, $Secs)
GUICtrlSetData($label, $Hours & ":" & $Mins & ":" & $Secs)
If $Time >= GUICtrlRead($Input2) * 1000 + GUICtrlRead($Input1) * 60000 Then
MsgBox(0, "TIME IS UP", "TIME IS UP!!!!!!!!!!!!!!!!!")
$Timer = -1
EndIf
EndIf
EndFunc ;==>Update
So funktionierts. ![]()
Im Prinzip brauchst du nur das hier (von BugFix):
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
Um die Dateien auch aus den Unterverzeichnissen auszulesen.
Danach musst du nur noch alle Dateien mit FileCopy in ein beliebiges Verzeichnis kopieren.
Neidisch naja soooooo toll ist es auch wieder nicht
, aber dank vieler Fabrvariationen und einem einstellbarem Sicherheitslevel, dürfte es für Bots schwer werden.... Hoffe ich
Immerhin ist es absolut CheatEngine sicher
. (Mehrfach getestet)
Und Geschwindigkeit ist absolut kein Problem^^ Im Moment braucht es so ca. 8 Millisekunden.
ZitatIch werde natürlich nicht einen Bot schreiben. Dazu fehlt mir auch die Zeit
Das war ja auch nur ein Scherz
Also mein Captcha Creator funtkioniert im Prinzip perfekt und es sieht auch richtig gut aus, nur kann ich ihn immer noch mit Cheat Engine bearbeiten.
Da muss ich wohl noch mal ran...
Soll ich mal ein Bild hochladen? Nur so als Beispiel ![]()
So, extra für PrideRage
: Version 1.1 mit attraktiverem Design. ![]()
Er schreibt einen Bot und testet es mit CheatEngine ![]()
Zitatich glaube mit meiner Methode funktioniert das nur bei Quadratischen Bildern.
Ansonsten werden sie leicht verzerrt.
Ich denke das wird lustig
Für die optische Darstellung des Captchas verwende ich natürlich GDI+^^
Jetzt muss ich mich nur noch mit Pointern beschäftigen ![]()
Hier gab es glaube ich schon einmal so ein Script, aber meins funktioniert auf jeden Fall und kann noch mehr
Es wird die mit dem Mauszeiger zurückgelegte Strecke in vielen Einheiten angezeigt.
Die Geschwindigkeits Anzeige ist zwar noch ein wenig verbuggt, aber der Rest stimmt exakt (Ich hab nachgemessen
).
(Damit das Script eure PPI berechnen kann, müsst ihr eure Bildschirmdiagonale in Zoll angeben.)
Edit: Habe jetzt statt Round, Floor verwendet. Ansonsten wird 0.5 Cm in 1Cm umgewandelt ![]()
Version 1.0:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$iDeskDiag = IniRead("Data.ini", "Const", "DeskDiagInch", "Error")
If $iDeskDiag = "Error" Then
$iDeskDiag = InputBox("Bildschirmdiagonale", "Länge der Bildschirmdiagonale in Zoll: ", "17")
If StringReplace($iDeskDiag, " ", "") = "" Then Exit
IniWrite("Data.ini", "Const", "DeskDiagInch", $iDeskDiag)
EndIf
$PPI = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / $iDeskDiag
$PPCm = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / ($iDeskDiag * 2.54)
$hWnd = GUICreate("MouseMeter", 165, 275)
$Label1 = GUICtrlCreateLabel("Zurückgelegte Strecke:", 10, 10, 155)
GUICtrlSetFont($Label1, 10)
$Label2 = GUICtrlCreateLabel("Zentimeter:", 10, 40)
$Label3 = GUICtrlCreateLabel("0", 10, 55, 70)
$Label4 = GUICtrlCreateLabel("Meter:", 10, 75)
$Label5 = GUICtrlCreateLabel("0", 10, 90, 70)
$Label6 = GUICtrlCreateLabel("Inch:", 10, 110)
$Label7 = GUICtrlCreateLabel("0", 10, 125, 70)
$Label8 = GUICtrlCreateLabel("Pixel:", 10, 145)
$Label9 = GUICtrlCreateLabel("0", 10, 160, 70)
$Label10 = GUICtrlCreateLabel("Geschwindigkeit:", 10, 180, 155)
GUICtrlSetFont($Label10, 10)
$Label11 = GUICtrlCreateLabel("Meter/Sekunde:", 10, 205)
$Label12 = GUICtrlCreateLabel("0", 10, 220, 70)
$Label13 = GUICtrlCreateLabel("Meter/Sekunde (Durchschnitt):", 10, 235)
$Label14 = GUICtrlCreateLabel("0", 10, 250, 70)
$Reset = GUICtrlCreateButton("Zurücksetzen", 90, 75, 70, 25)
$Exit = GUICtrlCreateButton("Beenden", 90, 105, 70, 25)
GUISetState()
$aPosOld = MouseGetPos()
$iDistance = 0
$iTime = TimerInit()
AdlibRegister("_Update", 30)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Exit
Exit
Case $Reset
$iTime = TimerInit()
$iDistance = 0
_Update()
EndSwitch
WEnd
Func _Update()
$iTime2 = TimerInit()
$aPosNew = MouseGetPos()
$iDiff = _GetPointsDistance($aPosOld[0], $aPosOld[1], $aPosNew[0], $aPosNew[1])
$iDistance += $iDiff
GUICtrlSetData($Label3, Floor($iDistance / $PPCm))
GUICtrlSetData($Label5, Round($iDistance / $PPCm / 100, 2))
GUICtrlSetData($Label7, Round($iDistance / $PPI, 1))
GUICtrlSetData($Label9, Floor($iDistance))
GUICtrlSetData($Label12, Floor(($iDiff / $PPCm / 100) / (TimerDiff($iTime2) / 1000)))
GUICtrlSetData($Label14, Round(($iDistance / $PPCm / 100) / (TimerDiff($iTime) / 1000), 2))
$aPosOld[0] = $aPosNew[0]
$aPosOld[1] = $aPosNew[1]
EndFunc ;==>_Update
Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
EndFunc ;==>_GetPointsDistance
Version 1.1 (Besseres Design)
(Diese Version ist ein Topmost Fenster und hat außerdem keine Titelleiste, daher muss man einfach in das Fenster reinklicken um es zu verschieben)
Jetzt wird das Fenster mit leichter Verzögerung an die aktuelle Position gebracht.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
$iGUIWidth = 165
$iGUIHeight = 290
$iX = @DesktopWidth - $iGUIWidth + $iGUIWidth / 2
$iY = @DesktopHeight - $iGUIHeight + $iGUIHeight / 2
$iDeskDiag = IniRead("Data.ini", "Const", "DeskDiagInch", "Error")
If $iDeskDiag = "Error" Then
$iDeskDiag = InputBox("Bildschirmdiagonale", "Länge der Bildschirmdiagonale in Zoll: ", "17")
If StringReplace($iDeskDiag, " ", "") = "" Then Exit
IniWrite("Data.ini", "Const", "DeskDiagInch", $iDeskDiag)
EndIf
$PPI = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / $iDeskDiag
$PPCm = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / ($iDeskDiag * 2.54)
$hWnd = GUICreate("MouseMeter", $iGUIWidth, $iGUIHeight, $iX - $iGUIWidth / 2, $iY - $iGUIHeight / 2, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x545454, $hWnd)
$Label1 = GUICtrlCreateLabel("Zurückgelegte Strecke:", 10, 10, 155)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label2 = GUICtrlCreateLabel("Zentimeter:", 10, 40)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel("0", 10, 55, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label4 = GUICtrlCreateLabel("Meter:", 10, 75)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label5 = GUICtrlCreateLabel("0", 10, 90, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label6 = GUICtrlCreateLabel("Inch:", 10, 110)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label7 = GUICtrlCreateLabel("0", 10, 125, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label8 = GUICtrlCreateLabel("Pixel:", 10, 145)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label9 = GUICtrlCreateLabel("0", 10, 160, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label10 = GUICtrlCreateLabel("Geschwindigkeit:", 10, 180, 155)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10)
$Label11 = GUICtrlCreateLabel("Meter/Sekunde:", 10, 205)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label12 = GUICtrlCreateLabel("0", 10, 220, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label13 = GUICtrlCreateLabel("Meter/Sekunde (Durchschnitt):", 10, 235, 100, 50)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label14 = GUICtrlCreateLabel("0", 10, 265, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Reset = GUICtrlCreateButton("Zurücksetzen", 90, 75, 70, 25)
$Exit = GUICtrlCreateButton("Beenden", 90, 105, 70, 25)
GUISetState()
WinSetTrans($hWnd, "", 200)
[/autoit] [autoit][/autoit] [autoit]$aPosOld = MouseGetPos()
$iDistance = 0
$iTime = TimerInit()
AdlibRegister("_Update", 30)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE, $Exit
Exit
Case $Reset
$iTime = TimerInit()
$iDistance = 0
_Update()
Case $GUI_EVENT_PRIMARYDOWN
_SetPos()
EndSwitch
WEnd
Func _Update()
$iTime2 = TimerInit()
$aPosNew = MouseGetPos()
$iDiff = _GetPointsDistance($aPosOld[0], $aPosOld[1], $aPosNew[0], $aPosNew[1])
$iDistance += $iDiff
GUICtrlSetData($Label3, Floor($iDistance / $PPCm))
GUICtrlSetData($Label5, Round($iDistance / $PPCm / 100, 2))
GUICtrlSetData($Label7, Round($iDistance / $PPI, 1))
GUICtrlSetData($Label9, Floor($iDistance))
GUICtrlSetData($Label12, Floor(($iDiff / $PPCm / 100) / (TimerDiff($iTime2) / 1000)))
GUICtrlSetData($Label14, Round(($iDistance / $PPCm / 100) / (TimerDiff($iTime) / 1000), 2))
$aPosOld[0] = $aPosNew[0]
$aPosOld[1] = $aPosNew[1]
EndFunc ;==>_Update
Func _SetPos()
Sleep(200)
While _IsPressed("01")
$aPosMouse = MouseGetPos()
$iDiffX = $iX - $aPosMouse[0]
If $iDiffX < 0 Then $iDiffX *= -1
$iDiffY = $iY - $aPosMouse[1]
If $iDiffY < 0 Then $iDiffY *= -1
$iSpeedX = $iDiffX / 10
$iSpeedY = $iDiffY / 10
If $iX < $aPosMouse[0] Then
$iX += $iSpeedX
ElseIf $iX > $aPosMouse[0] Then
$iX -= $iSpeedX
EndIf
If $iY < $aPosMouse[1] Then
$iY += $iSpeedY
ElseIf $iY > $aPosMouse[1] Then
$iY -= $iSpeedY
EndIf
WinMove($hWnd, "", $iX - $iGUIWidth / 2, $iY - $iGUIHeight / 2)
Sleep(30)
WEnd
EndFunc ;==>_SetPos
Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
EndFunc ;==>_GetPointsDistance
Version 1.2 (statt Round wurde Floor verwendet)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
$iGUIWidth = 165
$iGUIHeight = 290
$iX = @DesktopWidth - $iGUIWidth + $iGUIWidth / 2
$iY = @DesktopHeight - $iGUIHeight + $iGUIHeight / 2
$iDeskDiag = IniRead("Data.ini", "Const", "DeskDiagInch", "Error")
If $iDeskDiag = "Error" Then
$iDeskDiag = InputBox("Bildschirmdiagonale", "Länge der Bildschirmdiagonale in Zoll: ", "17")
If StringReplace($iDeskDiag, " ", "") = "" Then Exit
IniWrite("Data.ini", "Const", "DeskDiagInch", $iDeskDiag)
EndIf
$PPI = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / $iDeskDiag
$PPCm = Sqrt(@DesktopWidth ^ 2 + @DesktopHeight ^ 2) / ($iDeskDiag * 2.54)
$hWnd = GUICreate("MouseMeter", $iGUIWidth, $iGUIHeight, $iX - $iGUIWidth / 2, $iY - $iGUIHeight / 2, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x545454, $hWnd)
$Label1 = GUICtrlCreateLabel("Zurückgelegte Strecke:", 10, 10, 155)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label2 = GUICtrlCreateLabel("Zentimeter:", 10, 40)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel("0", 10, 55, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label4 = GUICtrlCreateLabel("Meter:", 10, 75)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label5 = GUICtrlCreateLabel("0", 10, 90, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label6 = GUICtrlCreateLabel("Inch:", 10, 110)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label7 = GUICtrlCreateLabel("0", 10, 125, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label8 = GUICtrlCreateLabel("Pixel:", 10, 145)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label9 = GUICtrlCreateLabel("0", 10, 160, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label10 = GUICtrlCreateLabel("Geschwindigkeit:", 10, 180, 155)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 10)
$Label11 = GUICtrlCreateLabel("Meter/Sekunde:", 10, 205)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label12 = GUICtrlCreateLabel("0", 10, 220, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label13 = GUICtrlCreateLabel("Meter/Sekunde (Durchschnitt):", 10, 235, 100, 50)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label14 = GUICtrlCreateLabel("0", 10, 265, 70)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xFFFFFF)
$Reset = GUICtrlCreateButton("Zurücksetzen", 90, 75, 70, 25)
$Exit = GUICtrlCreateButton("Beenden", 90, 105, 70, 25)
GUISetState()
WinSetTrans($hWnd, "", 200)
[/autoit] [autoit][/autoit] [autoit]$aPosOld = MouseGetPos()
$iDistance = 0
$iTime = TimerInit()
AdlibRegister("_Update", 30)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE, $Exit
Exit
Case $Reset
$iTime = TimerInit()
$iDistance = 0
_Update()
Case $GUI_EVENT_PRIMARYDOWN
_SetPos()
EndSwitch
WEnd
Func _Update()
$iTime2 = TimerInit()
$aPosNew = MouseGetPos()
$iDiff = _GetPointsDistance($aPosOld[0], $aPosOld[1], $aPosNew[0], $aPosNew[1])
$iDistance += $iDiff
GUICtrlSetData($Label3, Floor($iDistance / $PPCm))
GUICtrlSetData($Label5, Floor($iDistance / $PPCm / 100))
GUICtrlSetData($Label7, Floor($iDistance / $PPI))
GUICtrlSetData($Label9, Floor($iDistance))
GUICtrlSetData($Label12, Round(($iDiff / $PPCm / 100) / (TimerDiff($iTime2) / 1000), 4))
GUICtrlSetData($Label14, Round(($iDistance / $PPCm / 100) / (TimerDiff($iTime) / 1000), 4))
$aPosOld[0] = $aPosNew[0]
$aPosOld[1] = $aPosNew[1]
EndFunc ;==>_Update
Func _SetPos()
Sleep(200)
While _IsPressed("01")
$aPosMouse = MouseGetPos()
$iDiffX = $iX - $aPosMouse[0]
If $iDiffX < 0 Then $iDiffX *= -1
$iDiffY = $iY - $aPosMouse[1]
If $iDiffY < 0 Then $iDiffY *= -1
$iSpeedX = $iDiffX / 10
$iSpeedY = $iDiffY / 10
If $iX < $aPosMouse[0] Then
$iX += $iSpeedX
ElseIf $iX > $aPosMouse[0] Then
$iX -= $iSpeedX
EndIf
If $iY < $aPosMouse[1] Then
$iY += $iSpeedY
ElseIf $iY > $aPosMouse[1] Then
$iY -= $iSpeedY
EndIf
WinMove($hWnd, "", $iX - $iGUIWidth / 2, $iY - $iGUIHeight / 2)
Sleep(30)
WEnd
EndFunc ;==>_SetPos
Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
EndFunc ;==>_GetPointsDistance