Functie API ce returneaza KeyCode-ul al tastei apasate?
Last Updated: Sep 11 2007 22:10, Started by
PentiumSEX
, Aug 14 2007 16:54
·
0
#1
Posted 14 August 2007 - 16:54
Salutare, o intrebare/problema ce ma ...irita. Asadar:
Datele problemei: 1. Am o forma (program V.Basic) setata ca ascunsa (hide) = deci nu detine FOCUSUL; programul ruleaza in Background 2. Am un control TIMER, setat cu interval mic, astfel incit sa "capturez" fiecare apasare de tasta. Cerinta: Vreau o functie API .... ceva care sa-mi returneze codul ASCII al tastei apasate de mine (la tastatura). Incercari: Functia ** Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer ** NU ma multumeste pt ca pt FIECARE tasta trebuie sa scriu (codul in evenimetul TIMER): ** If GetAsyncKeyState(vbKeyA) Then 'daca s-a apasat tasta A Text1.Text = Text1.Text + "a" End If ' Si tot asa pt fiecare tasta: B, C, D, ........Z, 1, 2, ..... ** |
#2
Posted 15 August 2007 - 07:48
http://www.ex-design...t.asp?apicat=32
Mai tine seama si de urmatoarea indicatie : setarea proprietatii KeyPreview=True a formei va face ca aceasta sa raspunda la orice apasare de tasta inainte de celelalte controalele,adica poti face si ceva de genu Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Me.Text1.Text = Me.Text1.Text + Chr(KeyCode) End Sub chiar daca nu ai focusul pe Text1 |
#3
Posted 15 August 2007 - 11:20
Am inteles ce cauti..un fel de keylogger.am atasat un exemplu,foloseste o bibilioteca pe care va tb sa o distribui impreuna cu fis .exe
Attached Files |
#4
Posted 17 August 2007 - 18:13
cred ca iti va fi de ajutor..
Dim result As Integer Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub Timer1_Timer() For i = 1 To 255 result = 0 result = GetAsyncKeyState(i) If result = -32767 Then Text1.Text = Text1.Text + Chr(i) End if Next i End Subobservi controlu timer da? |
#5
Posted 22 August 2007 - 17:27
mda ...am prelucrat oleaca varianta lu' Alex (multumiri) si a rezultat codul:
Dim Tasta As Long For Tasta = 32 To 128 If GetAsyncKeyState(Tasta) <> 0 Then ' = 0 = Nu s-a apasat tasta Me.RTextBoxEditor.Text = Me.RTextBoxEditor.Text & Chr$(Tasta) Exit For End If Next Tasta *** Treaba e asa: 1. Ciclul FOR si intervalul mic din (control) TIMER => dau rezultate discutabile (nu intotdeauna OK) 2. Se intorc/afiseaza fara DISTINCTIE intre caractre mic/Mare 3. Pina acum cea mai fiabila ramine varianta cu IF ~ pt fiecare tasta (caracter) = vezi postarea initiala Multumesc si pt link-ul util ...atit poate mai revin/reveniti PS: Programul, practic e gata (simplu fiind) ...pate mai reveniti/revin N-am inteles/rulat exemplul lui Ionut_y ; dar poate ma voi "concentrila" si reusesc a rula/intelege atasamentul/codul Salutare |
#6
Posted 11 September 2007 - 22:10
bine acum priveste si varianta mea nu este foarte eficienta dar ...
Attached Files |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users