Tastatureinschlagüberwachung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Tastatureinschlagüberwachung

Beitrag von Rubiko »

nein, kein keylogger....

aufjedenfall will ich jeden tastatureinschlag der auf meinen pc gemacht wird aufnehmen, um ihn am ende auszugeben wieviele ich gemacht hab

es soll kein großes program sein , ohne grafisches design

Code: Alles auswählen

InitKeyboard()

Einschlaege.l
Einschlaege = 0

Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_All)
  Einschlaege = Einschlaege + 1
EndIf

If KeyboardPushed(#PB_Key_Insert)
  MessageRequester("lol",Str(Eingaben), 0)
EndIf

Until KeyboardPushed(#PB_Key_Escape)
irgendwas muss daran falsch sein, den debugger hab ich auch benutzt, und bei examinekeyboard() is schluss

P.S. schonwieder sone blöde post von mir...
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26
Wohnort: Hessen
Kontaktdaten:

Beitrag von Leo »

Die ganzen Keyboard Funktionen funktionieren nur mit OpenScreen() oder OpenWindowedScreen()...

Kleines Beispiel:

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"Test")

Einschlaege.l = 0

Repeat
    ClearScreen(0,0,0)
    ExamineKeyboard()
    
    StartDrawing(ScreenOutput())
    DrawingMode(1)
    FrontColor(255,255,255)
    DrawText("Hau auf die Tasten >_>")
    Locate(0,15)
    DrawText("Einschläge bis jetzt: "+Str(Einschlaege))
    StopDrawing()
    
    If KeyboardReleased(#PB_Key_All)
        Einschlaege = Einschlaege + 1
    EndIf
    
    FlipBuffers()
Until KeyboardPushed(1)
CloseScreen()
MessageRequester("lol","Du hast "+Str(Einschlaege)+" Einschläge!!")
End 
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wenn du die fehlermeldung, die der debugger dir ausgibt, auch liest,
dann siehst du, daß ExamineKeyboard mit einem Screen zusammenarbeitet,
den du mit OpenScreen bzw. OpenWindowedScreen öffnen musst.

wenn du ein fenster hast, gibt es events, um tastendrücke abzufangen.

bei einer console tippt man in die console direkt.

auf jeden fall brauchst du eine oberfläche, denen das betriebssystem die tastendrücke zuordnen kann.

wenn es einfach nur ein hintergrundprogrämmchen sein soll,
das tastatureingaben an andere programme überwacht,
wird das ganze viel komplizierter, und ich weiss nicht wie das geht...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Suchen macht Schlau. Sowas ähnliches habe ich schon Programmiert. Hier ist ne verbesserte version von nco2k (sry wenn ich den namen falsch geschrieben hab :(. ):

Code: Alles auswählen

Repeat
  For lngI = 7 To 255
    Taste = GetAsyncKeyState_(lngI)
    If (Taste & $1) = $1
      Miep+1
      Debug Miep
    EndIf
  Next
 
  lngI = 0
  Delay(1)
Until GetAsyncKeyState_(27)
Wäre vielleicht was fürs Codearchiv :roll:
Bild
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

danke an euch beide,
ihr habt geholfen^^

EDIT : jetzt kann ich mich schon bei 3 bedanken :P
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

hm sorry das ich den alten thread wieder hochhole, aber
irgendwie finde ich dieses event nicht von dem die rede ist, hab mir die hilfe lange angeschaut und durchsucht, aber macht sich einer die mühe und sucht für mich das event das tastendrücke abfängt?
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Kein Event. Ich Frage mit [c]For lngI = 7 To 255 [/c] und [c]GetAsyncKeyState_(lngI) [/c] den Status aller drückbaren Tasten ab. Wenn eine der Tasten gedrückt wurde, wird zu Miep "1" dazu addiert.

Das ist kein Event sondern ne API von Windows. Damit kann man bischen Systemtiefer programmieren ;).
Bild
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

oh^^ ok danke
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Antworten