
AutoIt
#include <GUIConstants.au3> #include <GuiStatusBar.au3> Global $Exit = 0, $aParts[2] = [300, 150], $Read[3], $Compare[3] $Form = GUICreate("Characters & Words per minute or second", 483, 495, 193, 125) $Edit1 = GUICtrlCreateEdit("", 8, 8, 465, 209, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL)) $Edit2 = GUICtrlCreateEdit("", 8, 224, 465, 209, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL)) GUICtrlSetState($Edit2, $GUI_DISABLE) GUICtrlSetData($Edit1, "") $Button = GUICtrlCreateButton("Start", 8, 440, 467, 25, 0) $hStatus = _GUICtrlStatusBar_Create($Form, $aParts) _GUICtrlStatusBar_SetMinHeight($hStatus, 20) $Progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH) $hProgress = GUICtrlGetHandle($Progress) _GUICtrlStatusBar_EmbedControl($hStatus, 1, $hProgress) _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200) GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $Button $Wrong = 0 GUICtrlSetState($Edit1, $GUI_DISABLE) GUICtrlSetData($Edit2, "") GUICtrlSetData($Button, "Stop") $Len = StringLen(GUICtrlRead($Edit1)) $Words = StringSplit(GUICtrlRead($Edit1), " ", 1) Sleep(500) GUICtrlSetState($Edit2, BitOR($GUI_FOCUS, $GUI_ENABLE)) $Timer = TimerInit() Do $msg2 = GUIGetMsg() If $msg2 = $Button Then $Exit = 1 ExitLoop ElseIf $msg2 = $GUI_EVENT_CLOSE Then Exit EndIf $Len2 = StringLen(GUICtrlRead($Edit2)) $Perc = Round(($Len2 / $Len) * 100, 0) _GUICtrlStatusBar_SetText($hStatus, "Letters count : " & $Len2 & " ( " & $Perc & "% )") GUICtrlSetData($Progress, $Perc) Until $Len2 >= $Len If $Exit = 0 Then $TimerDiff = Round(TimerDiff($Timer) / 1000, 2) $LPS = Round($Len / $TimerDiff, 2) $LPM = Round($LPS * 60, 2) $WPS = Round((UBound($Words) - 1) / $TimerDiff, 2) $WPM = Round($WPS * 60, 2) $Read[1] = GUICtrlRead($Edit1) $Read[2] = GUICtrlRead($Edit2) For $i = 1 To $Len For $z = 1 To 2 $Compare[$z] = StringLeft($Read[$z], $i) If $i <> 1 Then $Compare[$z] = StringTrimLeft($Read[$z], $i - 1) Next If $Compare[1] <> $Compare[2] Then $Wrong += 1 Next MsgBox("", "Result", "Completed in " & $TimerDiff & " second." & @CRLF & "Total Letters : " & $Len & @CRLF & _ "Total Words : " & UBound($Words) - 1 & @CRLF & "CPS : " & $LPS & @CRLF & "CPM : " & $LPM & @CRLF & "WPS : " & $WPS & @CRLF & "WPM : " & $WPM & @CRLF & _ "Wrong letter count : " & $Wrong & " ( " & Round(($Wrong / $Len) * 100, 0) & "% )") EndIf GUICtrlSetState($Edit1, $GUI_ENABLE) GUICtrlSetState($Edit2, $GUI_DISABLE) GUICtrlSetData($Button, "Start") GUICtrlSetData($Progress, 0) _GUICtrlStatusBar_SetText($hStatus, "") $Exit = 0 EndSwitch WEnd
Edited by Jex, 08 December 2007 - 11:02 AM.




