Seite 1 von 6

KeauHouMeter v0.8.1 + LogView + Skins

Verfasst: 23.06.2009 01:02
von KeauHou
Hi,

ihr kennt doch sicher alle das MausOmeter. Ich hab das KeauHouMeter geschrieben, welches die Anzahl Tastaturanschläge, Mausklickst und die Mausstrecke mitzählt.

Über das TrayIcon könnt ihr die Werte zurücksetzen. Per doppelklick aufs Trayicon könnt ihr das KeauHouMeter ein- und ausblenden. Außerdem könnt ihr übers TrayIcon die Bildschirmgröße einstellen damit mein Programm die Strecke der Maus berechnen kann anhand Diagonale, Seitenverhältnis und Bildschirmauflösung ;)
Messt es ruhig nach, wenn ihr die Maus einmal (vorrausgesetzt ihr habt die richtige Diagonale und das Seitenverhältnis angegeben) von links nach rechts schiebt :) Es passt auf +-1cm :D



Download KeauHouMeter

Code: Alles auswählen

#Changelog

v0.8.1
-Bug mit dem öffnen der Menüelemente behoben

v0.8
-einfachere Möglichkeit Bildschirmdiagonale (wahlweise in Zoll und cm) und Seitenverhätnis einzugeben
-Skins laden: Hintergrundbild + Textfarben, Textfarben können verändert werden
-Skins erstellen: Grafik laden + Textfarben einstellen

v0.7.1
-Änderung beim Speichern der Log-Datei


v0.7
-Tool um Log-Dateien ganz simpel auszuwerten
-Kilometerbug zum 4. mal entfernt
-Protokollierung optimiert (kleinere Log-Datei)
-Möglichkeit, die Protokollierung zu deaktivieren

v0.6
-Statistikfunktion (log-Datei), zwar noch ohne Auswertung, aber wenn die kommt habt ihr schon was zum angucken :P
-man kann endlich Kommazahlen als Bildschirmdiagonale angeben
-strg, shift, alt, altgr werden jeweils nur noch einmal gezählt

v0.5
-Kilometerbug zum 2. mal entfernt
-Kilomterbug zum 3. mal entfernt
-genauigkeit der Mausstreckenerfassung erhöht

v0.4
-bug bei Info-Fenster behoben
-Fenster lässt sich nicht mehr durch andere hindurch erfassen
-Einstellungen-Fenster
-Möglichkeit mit Windows zu starten
-Bug bei berechnung der Mausstrecke entfernt


v0.3
-Strecke der Maus wird in cm/m/km angezeigt indem man vorher Bildschirmdiagonale und Seitenverhältnis angibt und das Program den Rest selbst berechnet
-Font der Werte etwas kleiner
-Daten werden als Struktur gespeichert -> man kann nicht mehr manuell Werte ändern
-ToolTip mit Datum des letzten Resets

v0.2
-neues Design
-zählt Mausklicks
-zeigt Gesamtstrecke der Maus in Pixel an
-Font der Zahlen wird wenn sie zu groß sind kleiner 
KeauHouMeter
Bild

Verfasst: 23.06.2009 11:27
von Kai
Witzige Spielerei.

Er zeichnet allerdings nicht auf, wenn ich eine Taste gedrückt halte. /:->

Verfasst: 23.06.2009 11:33
von KeauHou
...weil die Wiederholrate rein vom BIOS oder OS abhängt und ich nur die "physikalischen" Anschläge werten wollte. Wenn ich beim gedrückthalten werten wollte müsste ich nur die Wiederholrate rausfinden und in dem Zyklus bei gedrückter Taste erhöhen.

Verfasst: 23.06.2009 11:42
von Kai
EDIT: So, das macht jetzt aber seinen Job.

Code: Alles auswählen

Structure KBDLLHOOKSTRUCT
  vkCode.l
  scanCode.l
  flags.l
  time.l
  dwExtraInfo.l
EndStructure
Global iHook.i

Procedure.l KeyProc(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  AddGadgetItem(0, -1, Str(*P\vkCode))
  SetGadgetState(0, CountGadgetItems(0)-1): SetGadgetState(0, -1) 
  ProcedureReturn CallNextHookEx_(iHook, nCode, wParam, *p)
EndProcedure

If OpenWindow(0, 0, 0, 200, 200, "KeyboardHook", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ListViewGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))
  iHook = SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyProc(), GetModuleHandle_(0), 0)
  While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
  UnhookWindowsHookEx_(iHook)
EndIf

Verfasst: 23.06.2009 12:09
von KeauHou
Aber dann funktioniert es nicht mehr global sondern nur wenn das Fenster den Fokus hat. Ich gehe alle Keycodes von 0 bis 255 durch und Prüfe mit GetAsyncKeyState. Wenn eine Taste gedrückt wird in nem Array key(255) der entsprechende Wert auf 1 gesetzt (damit falls man eine Taste gedrückt hält der Zähler nicht wie blöd hochzählt) und erst wieder auf 0 gesetzt wenn GetAsyncKeyState 0 zurückgibt. Theoretisch kann ich mit sehr geringem Aufwand wirklich mit nem Timer wiederholen lassen (sofern ich rausfinde wie ich an die Widerholfrequenz komme).


EDIT: Jetzt funtktionierst auch global, allerdings wird nicht nur das drücken sondern auch das wieder loslassen mitgezählt.
Es ging mir aber Ursprünglich nur um die Tastenanschläge die wirklich/physikalisch gedrückt werden. Trotzdem danke für die Lösung :)

Verfasst: 23.06.2009 12:23
von Kai

Code: Alles auswählen

Global vkKey.i, i.i

For i = 0 To 255: GetAsyncKeyState_(i): Next

Repeat
  For i = 0 To 255
    If GetAsyncKeyState_(i) & 1
      If i <> #VK_LBUTTON And i <> #VK_RBUTTON And i <> #VK_MBUTTON
        vkKey = i
        Debug i
      EndIf
    EndIf
  Next
  Delay(2)
Until vkKey = 27
So sollte es auch gehen.
Aber ist ja auch kein muß, Taste gedrückt halten, ist ansich ja eh betrug. :mrgreen:
War nur sohne anmerkung.

Verfasst: 23.06.2009 12:28
von KeauHou
Übrigens anstatt bei jedem Durchlauf auf alle 3 Maustasten zu prüfen kannst du auch einfach bei 3 anfangen zu zählen^^

(Ich hab extra ne Tastatur (nur die 102 * 4 koordinaten für Box() damit ich skalieren kann, den dazugehörigen Keycode und den Key als Ascii gemacht, die ich einbinden kann und will später die häufig benutzten Tasten dunkler einfärben als die weniger oft benutzten :D)

Verfasst: 23.06.2009 19:22
von Andesdaf
schöne Spielerei, gut, dass man es auch frei auf dem Desktop platzieren kann.

:allright:

Verfasst: 23.06.2009 19:31
von Thorium
Noch Mausklicks dazu und man kann damit APM (actions per minute) messen. Ist für Echtzeitstrategiespieler interessant.

Verfasst: 23.06.2009 19:44
von KeauHou
DIe Mausklicks meide ich momentan :D
Sprich die sind bewusst nicht dabei, ist aber ne Kleinigkeit das da mit reinzubringen. Und APM sind dann Tastaturanschläge+Mausklicks/Minute? Könnte ich leicht mit einbringen^^
Kann dann den Durchschnittswert berechnen wenn man zB 60 Minuten spielt dass er jede Minute die Summe der >Actions< + die der vorigen rechnet oder so mal sehn...
Also falls da interesse besteht könnte ich das anstelle der Anschläge pro Sekunde ändern.