TECLADO

USUARIO.EXCLUIDOS 04/10/2006 14:30:24
#175583
Ola gente como vai tudo bem?
Bom e o seguinte eu comprei um not no japão e funciona certinho balinha ele vc com 4 teclas a mais no teclado que não funcionam no sistema em portugues mais eles geram o keycod eu gostaria de cricar um sistema que quando eu clicasse nestas teclas ele enviasse outra letra tipo o Ç e o \
eu consigo fazer isso em programas que eu desenvolvi pois uso o keypress do formulario funciona certinho mais como faser isso pra qualquer outro programa tipo o word , o proprio VB e ETC

alguma dica?
LIONHEART 04/10/2006 15:22:59
#175594
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer


Vc vai ter que usar essa API

olha o anexo. No caso, estou usando o Notepad, mas pode ser em qualquer programa.
USUARIO.EXCLUIDOS 04/10/2006 15:54:39
#175601
LIONHERT amigo e exatamente isso que presiso so que o seguinte quando aperto a letra "a" ele coloca mais 14 letras "ç" eu ja consegui tocar a o "ç" para "\" e funciona certinho mais coloca 14 "\" e não estou conseguinto inibir essa repetição

ja mechi na taxa de repedição do teclado e coninuou a mesma coisa tem alguma ideia pra resolver este bug?
LIONHEART 04/10/2006 16:01:34
#175606
Não é um bug. é a programaçao cara..
vc vai ter que fazer o seguinte.

o timer está com 1 milesimo de segundo. Ajusta ele pro tempo que vc quer. Não sei bem quando é o tempo.
Acho que uns 100 ele deve ficar ajustado.
USUARIO.EXCLUIDOS 04/10/2006 18:49:50
#175652
LIONHEART cara funciono em parte, ou seja essa tecla que presiso monitorar ela não gera um codigo ascii mais gera um codigo no evendo keydown usando o keycode ela gera o numero 255

mais em ascii ela não gera nada então eu presisava de uma api que monitore o keycode e não o keyascii
USUARIO.EXCLUIDOS 04/10/2006 20:13:53
#175663
cara eu tenho este exemplo abaixo, ele captura as teclas numlock, capslock e scroll lock, mas ae ce vc fizer uma adaptação acho que funfa.


Option Explicit

Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'Maintenance string for PSS usage
End Type

Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long

Private Const VK_NUMLOCK = &H90
Private Const VK_SCROLL = &H91
Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1

Dim o As OSVERSIONINFO
Dim NumLockState As Boolean
Dim ScrollLockState As Boolean
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte

Private Sub Command1_Click()


o.dwOSVersionInfoSize = Len(o)
GetVersionEx o

GetKeyboardState keys(0)

'NumLock handling:
NumLockState = keys(VK_NUMLOCK)
If NumLockState <> True Then 'Turn numlock on
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '===== Win95
keys(VK_NUMLOCK) = 1
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '===== WinNT
'Simulate Key Press
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End If

'CapsLock handling:
CapsLockState = keys(VK_CAPITAL)
If CapsLockState <> True Then 'Turn capslock on
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '===== Win95
keys(VK_CAPITAL) = 1
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '===== WinNT
'Simulate Key Press
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End If

'ScrollLock handling:
ScrollLockState = keys(VK_SCROLL)
If ScrollLockState <> True Then 'Turn Scroll lock on
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '===== Win95
keys(VK_SCROLL) = 1
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '===== WinNT
'Simulate Key Press
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End If
End Sub




Private Sub Command2_Click(Index As Integer)
'simular pressionamento de capslock, numlock e scroll lock

Select Case Index
Case 0
'Simulate Key Press
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
Case 1
'Simulate Key Press
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
Case 2
'Simulate Key Press
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Select
End Sub


Private Sub Command3_Click()
'Este é o botão que verifica o status de capslock
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o

GetKeyboardState keys(0)

Dim CapsLockState As Boolean

CapsLockState = keys(VK_CAPITAL)
If CapsLockState = True Then
MsgBox "capslock ligado"
Else
MsgBox "capslock DESsligado"
End If

End Sub



Tópico encerrado , respostas não são mais permitidas