/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
[VB6] Keystroke
Fra : Johnny Emde Jensen


Dato : 23-08-02 08:19

Hej NG

Er det muligt at 'se' forskeld på om der trykkes 'Enter' eller 'Return'
De har jo begge værdien CHR(13)

/Johnny




 
 
Jens Vestergaard (23-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 23-08-02 08:31

"Johnny Emde Jensen" <emde@emde.dk> skrev i en meddelelse
news:ak4nej$2fht$1@news.cybercity.dk...
> Hej NG
>
> Er det muligt at 'se' forskeld på om der trykkes 'Enter' eller 'Return'
> De har jo begge værdien CHR(13)

*Meget* tricky spørgsmål. Har selv kæmpet med det i to år. Og vi har haft
det oppe at vende her i gruppen flere gange.

Jeg har en snut kode, der gør det ved hjælp af et API-kald - men den virker
*tilsyneladende* ikke under Win2000. Har ikke testet den på XP.

< --- KODE START --->

Private Declare Function PeekMessage Lib "user32" Alias _
"PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, _
ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _
ByVal wRemoveMsg As Long) As Long

Private Type POINTAPI
x As Long
y As Long
End Type

Private Type MSG
hwnd As Long
message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type

Const PM_NOREMOVE = &H0
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H101
Const VK_RETURN = &HD

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim MyMsg As MSG, RetVal As Long

' pass:
' MSG structure to receive message information
' my window handle
' low and high filter of 0, 0 to trap all messages
' PM_NOREMOVE to leave the keystroke in the message queue
' use PM_REMOVE (1) to remove it
RetVal = PeekMessage(MyMsg, Me.hwnd, 0, 0, PM_NOREMOVE)

' now, per Q77550, you should look for a MSG.wParam of VK_RETURN
' if this was the keystroke, then test bit 24 of the lparam - if ON,
' then keypad was used, otherwise, keyboard was used
If RetVal <> 0 Then
If MyMsg.wParam = VK_RETURN Then
If MyMsg.lParam And &H1000000 Then
MsgBox "Enter from Keypad pressed"
Else
MsgBox "Enter from Keyboard pressed"
End If
End If
Else
MsgBox "No message waiting, or possible problems calling PeekMessage"
End If
End Sub

<--- KODE SLUT --->

Hvis der er nogen i gruppen, der har en bedre løsning, hører jeg fortsat
gerne om den


--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Johnny Emde Jensen (23-08-2002)
Kommentar
Fra : Johnny Emde Jensen


Dato : 23-08-02 12:23

Hej Jens

Tak for hjælpen - jeg vil kigge på løsningen, jeg kører dog win2000

/Johnny

"Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
news:3d65e491$0$64872$edfadb0f@dspool01.news.tele.dk...
> "Johnny Emde Jensen" <emde@emde.dk> skrev i en meddelelse
> news:ak4nej$2fht$1@news.cybercity.dk...
> > Hej NG
> >
> > Er det muligt at 'se' forskeld på om der trykkes 'Enter' eller 'Return'
> > De har jo begge værdien CHR(13)
>
> *Meget* tricky spørgsmål. Har selv kæmpet med det i to år. Og vi har haft
> det oppe at vende her i gruppen flere gange.
>
> Jeg har en snut kode, der gør det ved hjælp af et API-kald - men den
virker
> *tilsyneladende* ikke under Win2000. Har ikke testet den på XP.
>
> < --- KODE START --->
>
> Private Declare Function PeekMessage Lib "user32" Alias _
> "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, _
> ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _
> ByVal wRemoveMsg As Long) As Long
>
> Private Type POINTAPI
> x As Long
> y As Long
> End Type
>
> Private Type MSG
> hwnd As Long
> message As Long
> wParam As Long
> lParam As Long
> time As Long
> pt As POINTAPI
> End Type
>
> Const PM_NOREMOVE = &H0
> Const WM_KEYDOWN = &H100
> Const WM_KEYUP = &H101
> Const VK_RETURN = &HD
>
> Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
> Dim MyMsg As MSG, RetVal As Long
>
> ' pass:
> ' MSG structure to receive message information
> ' my window handle
> ' low and high filter of 0, 0 to trap all messages
> ' PM_NOREMOVE to leave the keystroke in the message queue
> ' use PM_REMOVE (1) to remove it
> RetVal = PeekMessage(MyMsg, Me.hwnd, 0, 0, PM_NOREMOVE)
>
> ' now, per Q77550, you should look for a MSG.wParam of VK_RETURN
> ' if this was the keystroke, then test bit 24 of the lparam - if ON,
> ' then keypad was used, otherwise, keyboard was used
> If RetVal <> 0 Then
> If MyMsg.wParam = VK_RETURN Then
> If MyMsg.lParam And &H1000000 Then
> MsgBox "Enter from Keypad pressed"
> Else
> MsgBox "Enter from Keyboard pressed"
> End If
> End If
> Else
> MsgBox "No message waiting, or possible problems calling
PeekMessage"
> End If
> End Sub
>
> <--- KODE SLUT --->
>
> Hvis der er nogen i gruppen, der har en bedre løsning, hører jeg fortsat
> gerne om den
>
>
> --
> mvh
> Jens Vestergaard
> www.railsoft.dk
> --------
> Indsæt v før snablen
>
>



Johnny Emde Jensen (25-08-2002)
Kommentar
Fra : Johnny Emde Jensen


Dato : 25-08-02 09:18

Hej Jens

Det er korrekt - det virker tilsyneladende ikke med Win2000 jeg har søgt på
MS men unden held.

Det kan lade sig gøre, jeg bruger en client i forbindelse med mit arbejde,
og her benytter man 'Enter' til godkendelse af et skærmbillede.....

Mvh
Johnny

"Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
news:3d65e491$0$64872$edfadb0f@dspool01.news.tele.dk...
> "Johnny Emde Jensen" <emde@emde.dk> skrev i en meddelelse
> news:ak4nej$2fht$1@news.cybercity.dk...
> > Hej NG
> >
> > Er det muligt at 'se' forskeld på om der trykkes 'Enter' eller 'Return'
> > De har jo begge værdien CHR(13)
>
> *Meget* tricky spørgsmål. Har selv kæmpet med det i to år. Og vi har haft
> det oppe at vende her i gruppen flere gange.
>
> Jeg har en snut kode, der gør det ved hjælp af et API-kald - men den
virker
> *tilsyneladende* ikke under Win2000. Har ikke testet den på XP.
>
> < --- KODE START --->
>
> Private Declare Function PeekMessage Lib "user32" Alias _
> "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, _
> ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _
> ByVal wRemoveMsg As Long) As Long
>
> Private Type POINTAPI
> x As Long
> y As Long
> End Type
>
> Private Type MSG
> hwnd As Long
> message As Long
> wParam As Long
> lParam As Long
> time As Long
> pt As POINTAPI
> End Type
>
> Const PM_NOREMOVE = &H0
> Const WM_KEYDOWN = &H100
> Const WM_KEYUP = &H101
> Const VK_RETURN = &HD
>
> Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
> Dim MyMsg As MSG, RetVal As Long
>
> ' pass:
> ' MSG structure to receive message information
> ' my window handle
> ' low and high filter of 0, 0 to trap all messages
> ' PM_NOREMOVE to leave the keystroke in the message queue
> ' use PM_REMOVE (1) to remove it
> RetVal = PeekMessage(MyMsg, Me.hwnd, 0, 0, PM_NOREMOVE)
>
> ' now, per Q77550, you should look for a MSG.wParam of VK_RETURN
> ' if this was the keystroke, then test bit 24 of the lparam - if ON,
> ' then keypad was used, otherwise, keyboard was used
> If RetVal <> 0 Then
> If MyMsg.wParam = VK_RETURN Then
> If MyMsg.lParam And &H1000000 Then
> MsgBox "Enter from Keypad pressed"
> Else
> MsgBox "Enter from Keyboard pressed"
> End If
> End If
> Else
> MsgBox "No message waiting, or possible problems calling
PeekMessage"
> End If
> End Sub
>
> <--- KODE SLUT --->
>
> Hvis der er nogen i gruppen, der har en bedre løsning, hører jeg fortsat
> gerne om den
>
>
> --
> mvh
> Jens Vestergaard
> www.railsoft.dk
> --------
> Indsæt v før snablen
>
>



Jens Vestergaard (25-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 25-08-02 11:23

"Johnny Emde Jensen" <emde@emde.dk> skrev i en meddelelse
news:aka3s4$634$1@news.cybercity.dk...
> Hej Jens
>
> Det er korrekt - det virker tilsyneladende ikke med Win2000 jeg har søgt

> MS men unden held.
>
> Det kan lade sig gøre, jeg bruger en client i forbindelse med mit arbejde,
> og her benytter man 'Enter' til godkendelse af et skærmbillede.....

Ja, vist kan det lade sig gøre - selv på goe' gamle NT.

*Mit* problem er, at jeg skal simulere et system, hvor Retur og Enter er
forskellige - i virkelighedens verden kører det på NT/W2K. Og så griner
kunden jo af mig, når jeg forlanger, at simulationen skal køre på Win98....


Men vi skal ned på noget meget low-level (hvor jeg ikke kan følge med) for
at gøre det. Det er jeg ret sikker på...

Og fortsat: Hvis nogen har, eller finder, løsningen.... så tak!

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Claus H (07-09-2002)
Kommentar
Fra : Claus H


Dato : 07-09-02 21:57

Jeg formoder (udfra gruppen) at vi taler om kontrolelr på en VB-formular?
Har du prøvet med KeyDown eller KeyUp-eventene - mig bekendt får man al
mulig information om nøjagtig hvilek tast der er trykket på tastaturet oh
ikke blot dens Ascii-værdi som KeyPress returnerer?

Mvh

Claus H.
"Johnny Emde Jensen" <emde@emde.dk> skrev i en meddelelse
news:ak4nej$2fht$1@news.cybercity.dk...
> Hej NG
>
> Er det muligt at 'se' forskeld på om der trykkes 'Enter' eller 'Return'
> De har jo begge værdien CHR(13)
>
> /Johnny
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste