TECLADO
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?
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?
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.
Vc vai ter que usar essa API
olha o anexo. No caso, estou usando o Notepad, mas pode ser em qualquer programa.
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?
ja mechi na taxa de repedição do teclado e coninuou a mesma coisa tem alguma ideia pra resolver este bug?
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.
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.
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
mais em ascii ela não gera nada então eu presisava de uma api que monitore o keycode e não o keyascii
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
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