Programm zum Klicks zählen

  • Das Programm das ich hier geschrieben hab, ist zum zählen der Klicks die während dem laufenden Betrieb, getätigt wurden.

    Es läuft schön im Hintergrund doch das Tray-Icon hab ich zum Gebuggen (was sicher noch nötig ist :D ) eingeblendet gelassen.

    Verbesserungsvorschläge, Kritiken, Bemerkungen o.ä. sind zutiefst erwünscht :D

    Viel Spaß ;)


    Spoiler anzeigen
    [autoit]

    ;~ #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{F7}", "_ShowClicks")
    HotKeySet("{F6}", "_Reset")

    [/autoit] [autoit][/autoit] [autoit]

    Global $tWriteVar = TimerInit()
    Global $tWriteTime = $tWriteVar
    Global $ini_dir = @ScriptDir & "\clicks.ini"

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($ini_dir) Then
    FileWrite($ini_dir, _
    "[clicks]" & @CRLF & _
    "clicks=0" & @CRLF & _
    @CRLF & _
    "[time]" & @CRLF & _
    "minutes=0" & @CRLF & _
    @CRLF & _
    "[begin]" & @CRLF & _
    "year=" & @YEAR & @CRLF & _
    "day=" & @YDAY & @CRLF & _
    "hour=" & @HOUR & @CRLF & _
    "min=" & @MIN & @CRLF & _
    "sec=" & @SEC)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $clicks = IniRead($ini_dir, "clicks", "clicks", 0)
    Global $minutes = IniRead($ini_dir, "time", "minutes", 0)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(262144, "Clicker", "Mit F7 kannst du dir anzeigen lassen, wie viel Klicks du pro Minute die dein PC läuft schon gemacht hast. Mit F6 kannst du deine Klicks zurücksetzen.")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _Check(01)
    _Check(02)
    _Check(04)
    Sleep(50)
    If TimerDiff($tWriteVar) / 1000 >= 5 Then
    IniWrite($ini_dir, "clicks", "clicks", $clicks)
    IniWrite($ini_dir, "time", "minutes", $minutes)
    $tWriteVar = TimerInit()
    EndIf
    If TimerDiff($tWriteTime) / 1000 >= 60 Then
    $minutes += 1
    $tWriteTime = TimerInit()
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShowClicks()
    Local $local_minutes = $minutes
    Local $clicks_per_minute = $clicks / $local_minutes
    $clicks_per_minute = Int($clicks_per_minute)
    Local $sek_now = (@YEAR * 31536000) + (@YDAY * 86400) + (@HOUR * 3600) + (@MIN * 60) + @SEC
    Local $sek_restart = (IniRead($ini_dir, "begin", "year", @YEAR) * 31536000) + (IniRead($ini_dir, "begin", "day", @YDAY) * 86400) + (IniRead($ini_dir, "begin", "hour", @HOUR) * 3600) + IniRead($ini_dir, "begin", "sec", @SEC)
    Local $sek = $sek_now - $sek_restart
    Local $seit = _Umrechnen($sek)
    MsgBox(262144, "Clicker", "Der Clicker läuft schon seit" & $seit & @CRLF & "und du hast ca. " & $clicks_per_minute & " Mausclicks pro Minute.")
    EndFunc ;==>_ShowClicks

    [/autoit] [autoit][/autoit] [autoit]

    Func _Check($button)
    If _IsPressed($button) Then
    $clicks += 1
    Do
    Sleep(50)
    Until Not _IsPressed($button)
    EndIf
    EndFunc ;==>_Check

    [/autoit] [autoit][/autoit] [autoit]

    Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
    Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey)
    If @error Then Return SetError(@error, @extended, False)
    Return BitAND($a_R[0], 0x8000) <> 0
    EndFunc ;==>_IsPressed

    [/autoit] [autoit][/autoit] [autoit]

    Func _Umrechnen($sekunden_in)

    [/autoit] [autoit][/autoit] [autoit]

    Local $levels = -1
    Local $jahre
    Local $tage
    Local $stunden
    Local $minuten
    Local $sekunden
    Local $return

    [/autoit] [autoit][/autoit] [autoit]

    If $sekunden_in >= 31536000 Then
    $levels = 5
    Do
    $sekunden_in -= 31536000
    $jahre += 1
    Until $sekunden_in < 31536000
    EndIf
    If $sekunden_in >= 86400 Then
    If $levels = -1 Then $levels = 4
    Do
    $sekunden_in -= 86400
    $tage += 1
    Until $sekunden_in < 86400
    EndIf
    If $sekunden_in >= 3600 Then
    If $levels = -1 Then $levels = 3
    Do
    $sekunden_in -= 3600
    $stunden += 1
    Until $sekunden_in < 3600
    EndIf
    If $sekunden_in >= 60 Then
    If $levels = -1 Then $levels = 2
    Do
    $sekunden_in -= 60
    $minuten += 1
    Until $sekunden_in < 60
    EndIf
    If $levels = -1 Then $levels = 1
    $sekunden = $sekunden_in

    [/autoit] [autoit][/autoit] [autoit]

    If $levels = 5 Then
    If $jahre = 1 Then
    $return = $jahre & " Jahr und"
    Else
    $return = $jahre & " Jahre und"
    EndIf
    ElseIf $levels >= 4 Then
    If $tage = 1 Then
    $return = $return & " " & $tage & " Tag und"
    Else
    $return = $return & " " & $tage & " Tage und"
    EndIf
    ElseIf $levels >= 3 Then
    If $stunden = 1 Then
    $return = $return & " " & $stunden & " Stunde und"
    Else
    $return = $return & " " & $stunden & " Stunden und"
    EndIf
    ElseIf $levels >= 2 Then
    If $minuten = 1 Then
    $return = $return & " " & $minuten & " Minute und und"
    Else
    $return = $return & " " & $minuten & " Minute und und"
    EndIf
    EndIf
    If $sekunden = 1 Then
    $return = $return & " " & $sekunden & " Sekunde"
    Else
    $return = $return & " " & $sekunden & " Sekunden"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return ($return)
    EndFunc ;==>_Umrechnen

    [/autoit] [autoit][/autoit] [autoit]

    Func _Reset()
    If MsgBox(262148, "Clicker", "Bist du sicher dass du deine Clicks zurücksetzen willst ?") = 6 Then
    FileDelete($ini_dir)
    FileWrite($ini_dir, _
    "[clicks]" & @CRLF & _
    "clicks=0" & @CRLF & _
    @CRLF & _
    "[time]" & @CRLF & _
    "minutes=0" & @CRLF & _
    @CRLF & _
    "[begin]" & @CRLF & _
    "year=" & @YEAR & @CRLF & _
    "day=" & @YDAY & @CRLF & _
    "hour=" & @HOUR & @CRLF & _
    "min=" & @MIN & @CRLF & _
    "sec=" & @SEC)
    $clicks = 0
    EndIf
    EndFunc ;==>_Reset

    [/autoit]
  • Man kann Inis auch mit Iniwrite erstellen^^ Falls keine vorhanden ist, macht es eine. das Filewrite ist also unnötig^^ ansonsten: hätte denk ich auch jeden selber hinbekommen aber ersparst machen arbeit^^

  • ist das dein Ernst??????

    Zitat

    Dieser Beitrag wurde bereits 7237 mal editiert, zuletzt von »Trainman« (6. April 2010, 18:12)


    7237 Edits??
    Und wie kann der letzte Edit am 6. April dieses Jahres gemacht worden sein, wenn das Thema gestern eröffnet wurde?


    Außerdem gehört das hier eher in "Hilfe und Unterstützung" als nach Skripte. Hier werden nur fertige Skripte released.