vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Auto. Tastendrucks verhindern (API = GetAsyncKeyState) 
Autor: NickName
Datum: 18.09.10 17:36

Hallo,

ich habe eine Frage zu diesem Tip: http://www.vbarchiv.net/api/details.php?id=getasynckeystate

Wie kann ich es verhindern, wenn z.B. die Taste "7" gedrückt & gehalten wird, dass die "7" aber nur einmal angezeigt wird. Hier mal ein Code, einfach nur einen Timer und ein Label hinzufügen:
Option Explicit
 
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
 
Dim Retval As Long, i As Long
 
Private Sub Form_Load()
Label1.Left = 780: Label1.Top = 90
Label1.Height = 3000: Label1.Width = 3000
Label1.FontBold = True: Label1.FontSize = 18
Label1.Caption = vbNullString
Label1.BorderStyle = 1
Label1.Alignment = 1
 
Timer1.Interval = 3: Timer1.Enabled = True
End Sub
 
 
 
Private Sub Timer1_Timer()
' Die Zahlen über der Tastatur werden abgefangen
For i = 48 To 57
Retval = GetAsyncKeyState(i): If Retval = -32767 Then Exit For
Next i
If i < 58 Then Label1.Caption = Label1.Caption & i - 48
 
' Die Zahlen des Tastaturpads werden abgefangen
For i = 96 To 105
Retval = GetAsyncKeyState(i): If Retval = -32767 Then Exit For
Next i
If i < 106 Then Label1.Caption = Label1.Caption & i - 96
End Sub
Man wird verstehen was ich meine, wenn man dieses Prog. startet!



Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auto. Tastendrucks verhindern (API = GetAsyncKeyState) 
Autor: ModeratorMartoeng (Moderator)
Datum: 18.09.10 17:57

So kannst Du das erstmal gar nicht ändern. Das ist ja eine systemweite Einstellung, nach wieviel Millisekunden die Taste erneut "angeschlagen" wird.

Du kannst andere Funktionen nutzen und Dir immer den aktuellen Stand der Tasten holen (GetKbdState oder ähnlich).
Ein 3ms-Intervall ist übrigens nicht sehr gut.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auto. Tastendrucks verhindern (API = GetAsyncKeyState) 
Autor: NickName
Datum: 18.09.10 18:03

Hallo,

ich glaube du verstehst mich falsch.
Ich meine, die wiederholten Tastenschläge sollen unterbunden werden bzw. es kann abgefragt werden ...
Das hatte ich schon mal, nur ich finde es nicht mehr. ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auto. Tastendrucks verhindern (API = GetAsyncKeyState) 
Autor: ModeratorMartoeng (Moderator)
Datum: 19.09.10 14:36

http://msdn.microsoft.com/en-us/library/ms645530%28v=VS.85%29.aspx

Da stehen alle Keyboard-Funktionen.

Über SystemParametersInfo kannst Du abfragen, wie schnell sich der Anschlag wiederholt.

Const SPI_GETKEYBOARDSPEED = 10&
Const SPI_GETKEYBOARDDELAY = 22&
private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(byval uAction as Long, byval uParam as Long, lpvParam as Any, byval _
fuWinIni as Long) as Long

Ausschalten kann man das meines Wissens nicht.

SPI_SETKEYBOARDDELAY
Sets the keyboard repeat-delay setting. The uiParam parameter must specify 0, 1, 2, or 3, where zero sets the shortest delay approximately 250 ms) and 3 sets the longest delay (approximately 1 second). The actual delay associated with each value may vary depending on the hardware.

SPI_SETKEYBOARDSPEED
Sets the keyboard repeat-speed setting. The uiParam parameter must specify a value in the range from 0 (approximately 2.5 repetitions per second) through 31 (approximately 30 repetitions per second). The actual repeat rates are hardware-dependent and may vary from a linear scale by as much as 20%. If uiParam is greater than 31, the parameter is set to 31.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel