Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Despre compania de aministrare Sq...

Durere taietura deget dupa 2 luni

Dalți gravare lemn

Didgeridoo
 Motorola Edge 50 Ultra

Gaura perete apartament cu evitar...

Orientare antena prime focus

Problema conectare mail yahoo
 comisioane asociatie proprietari

Primul sistem de televiziune cu p...

Internetul este neutilizabil fara...

Eroare cloud burn icopy face id
 DermaRoller ce este ?

Articole limba Germana

Cum se imparte legal o mostenire ...

Avem sanse sa avem energie electr...
 

Functie API ce returneaza KeyCode-ul al tastei apasate?

- - - - -
  • Please log in to reply
5 replies to this topic

#1
PentiumSEX

PentiumSEX

    Member

  • Grup: Members
  • Posts: 478
  • Înscris: 06.08.2005
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
ionut_y

ionut_y

    Member

  • Grup: Members
  • Posts: 836
  • Înscris: 21.06.2005
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
ionut_y

ionut_y

    Member

  • Grup: Members
  • Posts: 836
  • Înscris: 21.06.2005
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
Alex3377

Alex3377

    Junior Member

  • Grup: Members
  • Posts: 36
  • Înscris: 10.08.2007
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 Sub
observi controlu timer da?

#5
PentiumSEX

PentiumSEX

    Member

  • Grup: Members
  • Posts: 478
  • Înscris: 06.08.2005
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
freshmeat

freshmeat

    Junior Member

  • Grup: Members
  • Posts: 113
  • Înscris: 10.04.2007
bine acum priveste si varianta mea :D 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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate