Tastatur Zähler

  • Hey leute,

    ich will ein kleines programm machen mit dem ich angezeigt bekomme wie viel anschläge ich Pro Minute mache und wie viel ich insgesamt gemacht habe und wie viel am Tag oder an verschiedenen Tagen...

  • ok. viel spaß


    edit: falls dus nicht verstehst:

    dass du hilfe willst is mir schon klar

    blos bei was. erst selber probieren und dann ausführlich dein problem posten.

    gib dir bitte mehr mühe beim erstellen deiner threads

  • also alle tastenschläge mit

    [autoit]

    _IsPressed

    [/autoit]


    abfangen und dann in eine variable +1
    dann vllt noch ein bischen rechnen etc. um das mit den tastenschlägen in der minute zu bekommem und halt beides in eine .ini schreiben oder so

  • Nimm ein Editcontrol fürs erfassen, Mit _GUICtrlEdit_GetTextLen kanst du die Zeichen ermitteln

    Beispiel aus Hilfe
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_Ed = False ; Prüft den Klassennamen (ClassName), der an die Edit-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $StatusBar, $hEdit, $hGUI
    Local $Wow64 = ""
    If @AutoItX64 Then $Wow64 = "\Wow6432Node"
    Local $sFile = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\include\changelog.txt"
    Local $aPartRightSide[2] = [378, -1]

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

    ; Erstellt eine GUI
    $hGUI = GUICreate("Edit: Ermittelt die Textlänge", 400, 300)
    $hEdit = GUICtrlCreateEdit("", 2, 2, 394, 268, BitOR($ES_WANTRETURN, $WS_VSCROLL))
    $StatusBar = _GUICtrlStatusBar_Create($hGUI, $aPartRightSide)
    _GUICtrlStatusBar_SetIcon($StatusBar, 1, 97, "shell32.dll")
    GUISetState()

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

    ; Setzt die Ränder
    _GUICtrlEdit_SetMargins($hEdit, BitOR($EC_LEFTMARGIN, $EC_RIGHTMARGIN), 10, 10)

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

    ; Setzt den Text
    _GUICtrlEdit_SetText($hEdit, FileRead($sFile))

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

    ; Ermittelt die Textlänge
    _GUICtrlStatusBar_SetText($StatusBar, "Textlänge: " & _GUICtrlEdit_GetTextLen($hEdit) & " Zeichen")

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • Die demo funktioniert ja gar nicht =(
    hab es jetzt mal so versucht ging aber nicht...

    [autoit]

    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $StatusBar = _GUICtrlStatusBar_Create($hGUI, $aPartRightSide)
    $Form1 = GUICreate("ZZ - ZeichenZähler", 299, 52, 192, 124)
    $Label1 = GUICtrlCreateLabel("Anschläge seit Start des Systems", 0, 0, 160, 17)
    $Label2 = GUICtrlCreateLabel(_GUICtrlEdit_GetTextLen($hEdit), 8, 24, 200, 17)
    $Label3 = GUICtrlCreateLabel("Zeichen", 216, 24, 43, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]
  • Evtl. so:

    Spoiler anzeigen
    [autoit]

    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <misc.au3>

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

    Global $anzahl = 0

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

    $Form1 = GUICreate("ZZ - ZeichenZähler", 299, 52, 192, 124)
    $Label1 = GUICtrlCreateLabel("Anschläge seit Start des Systems", 0, 0, 160, 17)
    $Label2 = GUICtrlCreateLabel("0", 8, 24, 200, 17)
    $Label3 = GUICtrlCreateLabel("Zeichen", 216, 24, 43, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    If _IsAnyKeyPressed() >= 0 Then
    $anzahl = $anzahl + 1
    GUICtrlSetData($Label2, $anzahl)
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _IsAnyKeyPressed($start = 0, $end = 255)
    For $i = $start to $end
    if (_IsPressed(Hex($i))) Then return $i
    Next
    return -1
    EndFunc

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Die demo funktioniert ja gar nicht =(

    Das Hilfebeispiel funktioniert, sprich es gibt direkt nach dem Start die Länge des geladenen Textes (changelog.txt) aus. Du müsstest dies:

    [autoit]

    ; Ermittelt die Textlänge
    _GUICtrlStatusBar_SetText($StatusBar, "Textlänge: " & _GUICtrlEdit_GetTextLen($hEdit) & " Zeichen")

    [/autoit]

    nur auf einen Button legen (besser noch eine Func die du nach 10 Minuten aufrufst)

    hab es jetzt mal so versucht ging aber nicht...

    kann es auch nicht, da du

    • die Gui erst nach der Statusbar (mit einem anderen Namen erstellst)
    • und kein Edit-Feld hast

    mfg (Auuto)Bert

  • Ich habe so etwas schon mal gemacht...
    Hier mal alles auf den neuesten Stand gebracht :D.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $hWnd = GUICreate("Anschläge", 200, 150)
    $cLabel1 = GUICtrlCreateLabel("Gesamt:", 5, 5, 50, 15)
    $cLabel2 = GUICtrlCreateLabel("Pro Minute:", 5, 25, 60, 15)
    $cCounter = GUICtrlCreateLabel(0, 100, 5, 90, 15)
    $cKeysPerMinute = GUICtrlCreateLabel(0, 100, 25, 90, 15)
    $cEdit = GUICtrlCreateEdit("", 5, 45, 190, 100)
    GUISetState()

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    $vUser32DLL = DllOpen("User32.dll")
    $iKeysPressed = 0
    $iLastKeyPressed = -1
    $Timer = TimerInit()

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

    While Sleep(10)
    If Not _IsPressed(Hex($iLastKeyPressed, 2), $vUser32DLL) Then $iLastKeyPressed = -1
    For $i = 3 To 255
    If $i <> $iLastKeyPressed And _IsPressed(Hex($i, 2), $vUser32DLL) Then
    $iKeysPressed += 1
    $iLastKeyPressed = $i
    _Update()
    EndIf
    Next
    WEnd

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

    Func _Update()
    $KeysPerMinute = $iKeysPressed / (TimerDiff($Timer) / 60)
    GUICtrlSetData($cCounter, $iKeysPressed)
    GUICtrlSetData($cKeysPerMinute, Round($KeysPerMinute, 2))
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]


    Es funktioniert auf jeden Fall :P.
    Sprenger hat das glaub auch mal gemacht, oder? ?(