Tastendrücke systemweit erfassen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Tastendrücke systemweit erfassen

Beitrag von Joel »

Hi,

Ich brauche eine Procedure, die mir die Tastendrücke Systemweit wiedergibt, mit diesen besonderheiten:

1. Sie sollte z.B. "A" nur einmal zurück geben, auch wenn man sie länger drückt.

2. Sollte sie auch Groß udn Kleinbuchstaben Unterscheiden können.

Gibt es da Ideen, wie man das umsetzen kann?
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

Beitrag von Rokur »

Zum systemweiten Abfangen von Tastatureingaben gibts hier schon mehrere Threads (=>Suche) und zu deinen "Sonderwünschen":

1. Das kannst du z.B. über einen Puffer realisieren: Merk dir einfach den letzten Tastendruck, und wenn der nächste mit dem letzten übereinstimmt, ignoriere ihn.

2. Bei Tastendrücken gibt es kein groß und klein, entweder ist die A-Taste gedrückt oder nicht. Du könntest nur abfragen ob die Shift-Taste zeitgleich gedrückt ist oder ob Capslock aktiv ist.
WinXP 32 Bit, PureBasic 4.40 (x86)
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Rokur hat geschrieben:
1. Das kannst du z.B. über einen Puffer realisieren: Merk dir einfach den letzten Tastendruck, und wenn der nächste mit dem letzten übereinstimmt, ignoriere ihn.
Dann wär "aa" ja nur ein "a"
[Ironie]
Für ein Keyloger ist das keine Gute Idee :D

Wenn jetzt mal einer einen guten Keyloger Source Online stellen würde , dann würden diese Threads abnehmen :D
[/Ironie]
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

X360 Andy hat geschrieben:
Rokur hat geschrieben:
1. Das kannst du z.B. über einen Puffer realisieren: Merk dir einfach den letzten Tastendruck, und wenn der nächste mit dem letzten übereinstimmt, ignoriere ihn.
Dann wär "aa" ja nur ein "a"
[Ironie]
Für ein Keyloger ist das keine Gute Idee :D

Wenn jetzt mal einer einen guten Keyloger Source Online stellen würde , dann würden diese Threads abnehmen :D
[/Ironie]

Hehe, genau :mrgreen:

Lol, ja gut sagen wirs mal so. Wenn die Taste noch gedrückt ist, dann bekomme ich ja immer die Taste zurück. Wenn jemand die Taste nun loslässt und wieder dückt ist ja kurz ein Leerlauf drin.

<Ironie>Naja also ich werde den Code hier aufjedenfall reinstellen, für eure Keylogger. Also haltet Ausschau nach deinem "Keylogger Mein procedure" Thread im Codes Tipps und Tricks Forum :mrgreen: >/ironie>

Mein Proggy soll z.B. das Einstellungsfenster nur öffnen, wenn man : "Einstellungen Server" eingibt, egal, ob man in einem Spiel ist.... Mehr verrate ich aber nicht zu meiner neuen Programmidee.
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
coder
Beiträge: 204
Registriert: 25.09.2005 17:53
Computerausstattung: Intel Core2Quad Q8200 @ 2.33GHz
ASUS P5Q3, 2GB DDR3-1066 RAM, ATi Raedeon HD 4850
Wohnort: Deutschland
Kontaktdaten:

Beitrag von coder »

Musst mal im Forum nach Keyboard-Hook oder auch KeyLogger suchen. (Zu letzterem gabs glaub ich wirklich mal 'ne Thread mit Codes...)
Windows 7 x64 | PureBasic 4.60 4.50 4.02
Ja verdammt, meine Eltern wohnen immer noch bei mir!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

da es noch nicht gesagt wurde:

der Rückgabewert von GetAsyncKeyState_(#vk_) hat ein bestimmtes bit gesetzt, wenn es sich um den ersten druck auf diese taste handelt.
weitere rückmeldungen vom gedrückt halten sind zwar auch #True, haben aber einen anderen Zahlenwert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

coder hat geschrieben:Musst mal im Forum nach Keyboard-Hook oder auch KeyLogger suchen. (Zu letzterem gabs glaub ich wirklich mal 'ne Thread mit Codes...)
http://purebasic.fr/german/viewtopic.ph ... 06&start=0 <)
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Hab sowieso schon eine code, der muss jetzt nur noch verstehen, wann groß und klein geschrieben wird.

Hier mal ein Beispiel...aber nichts böses damit machen :D

Code: Alles auswählen

Global Taste

Procedure Key() 
   For n=0 To 255 
      If GetAsyncKeyState_(n) 
      
      ProcedureReturn n
      EndIf 
   Next 
EndProcedure


Procedure B(d.l)
Repeat 
m = Key()
If m <> 0
WertA = m
Repeat
WertB = Key()
Until WertA <> WertB
Taste = WertA
EndIf 
ForEver 
EndProcedure 

Procedure Tasten(f.l)
B_Thread = CreateThread(@B(), 44)

Repeat 
If Taste <> 0
      If Taste = #VK_A
      Debug "A"
      EndIf 
      
      If Taste = #VK_B
      Debug "B"
      EndIf 
      
      If Taste = #VK_C
      Debug "C"
      EndIf 
      
      
      If Taste = #VK_D
      Debug "D"
      EndIf 
      
      If Taste = #VK_E
      Debug "E"
      EndIf
      
      If Taste = #VK_F
      Debug "F"
      EndIf
      
      If Taste = #VK_G
      Debug "G"
      EndIf
      
      If Taste = #VK_H
      Debug "H"
      EndIf
      
      If Taste = #VK_I
      Debug "I"
      EndIf
      
      If Taste = #VK_J
      Debug "J"
      EndIf
      
      If Taste = #VK_K
      Debug "K"
      EndIf
      
      If Taste = #VK_L
      Debug "L"
      EndIf
      
      If Taste = #VK_M
      Debug "M"
      EndIf
      
      If Taste = #VK_N
      Debug "N"
      EndIf
      
      If Taste = #VK_O
      Debug "O"
      EndIf
      
      If Taste = #VK_P
      Debug "P"
      EndIf
      
      If Taste = #VK_Q
      Debug "Q"
      EndIf
      
      If Taste = #VK_R
      Debug "R"
      EndIf
      
      If Taste = #VK_S
      Debug "S"
      EndIf
      
      If Taste = #VK_T
      Debug "T"
      EndIf
      
      If Taste = #VK_U
      Debug "U"
      EndIf
      
      If Taste = #VK_V
      Debug "V"
      EndIf
      
      If Taste = #VK_W
      Debug "W"
      EndIf
      
      If Taste = #VK_X
      Debug "X"
      EndIf
      
      If Taste = #VK_Y
      Debug "Y"
      EndIf
      
      If Taste = #VK_Z 
      Debug "Z"
      EndIf
      
      If Taste = #VK_DELETE
      Debug "...Delete..."
      EndIf
      
      Taste = 0

EndIf 
ForEver 
EndProcedure 

Tasten_Thread = CreateThread(@Tasten(), 55)



Delay(2222)
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Ist doch an sich ganz klar, wenn Shift oder Capslock gedrückt wird, dann wird groß geschrieben, ansonsten klein.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Antworten