CANCELAMENTO DE TECLA F2
Olá pessoal!
Estou precisando saber como que eu iniboo uso da tecla F2 pelo usuário. Ou seja, eu abro um sistema gráfico no vb6, porém somente o ambiente gráfico.
A tecla F2 é um comando implÃcito deste ambiente gráfico que é externo. então o que acontece quando carrego este ambiente gráfico e pressiono a tecla F2 ? Ele me lança para a frente todo o sistema gráficó e é isto que não quero que aconteça. Será que é possÃvel inibir a tecla F2, mesmo sendo um comando nativo deste ou outro programa qualquer ?
Os únicos eventos deste componente são:
DragDrop;
DragOver;
GotFocus;
LostFocus;
Validate.
Melhor dizendo: Ao carregar o form, se puder cancelar a tecla F2 fá está de bom tamanho.
Abraço a todos.
Estou precisando saber como que eu iniboo uso da tecla F2 pelo usuário. Ou seja, eu abro um sistema gráfico no vb6, porém somente o ambiente gráfico.
A tecla F2 é um comando implÃcito deste ambiente gráfico que é externo. então o que acontece quando carrego este ambiente gráfico e pressiono a tecla F2 ? Ele me lança para a frente todo o sistema gráficó e é isto que não quero que aconteça. Será que é possÃvel inibir a tecla F2, mesmo sendo um comando nativo deste ou outro programa qualquer ?
Os únicos eventos deste componente são:
DragDrop;
DragOver;
GotFocus;
LostFocus;
Validate.
Melhor dizendo: Ao carregar o form, se puder cancelar a tecla F2 fá está de bom tamanho.
Abraço a todos.
basta você inibir no evento keypress do form
E via windows TREZE, ao carregar a aplicação ?
Estou usando desta forma e ainda assim a tecla F2 chama o comando.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF2 Then
KeyAscii = 0
End Sub
ou
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyCode = vbKeyF2 Then
KeyAscii = 0
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF2 Then
KeyAscii = 0
End Sub
ou
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyCode = vbKeyF2 Then
KeyAscii = 0
End Sub
a propriedade keypreview do form tem que ser true
Mesmo assim ainda não funciona !
Pelo windows talvés resolva, não ?
Ao carregar a aplicação.
Pelo windows talvés resolva, não ?
Ao carregar a aplicação.
propriedade keypreview = true e o seguinte codigo
lembrando que o form tem que estar com o foco
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then
KeyCode = 0
End If
End Sub
lembrando que o form tem que estar com o foco
Beleza TREZE. Vou testar aquÃ.
Obrigadão!
Obrigadão!
Olá pessoal !
Eu encontei esse código aquÃ. E para evitar problemas na configuração da minha máquina a minha pergunta é: será que bastaria colocar somente o codigo da tecla F2 ?
Onde devo implementar o código?
Desde já obrigadão.
Eis o código:
[ô]Desabilita Crtl-Esc+Alt-Tab+Alt-Esc- Windows Xp/2000 *
[ô]Coloca isso em um módulo
Option Explicit
Public Declare Sub CopyMemory Lib [Ô]kernel32[Ô] Alias [Ô]RtlMoveMemory[Ô] (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib [Ô]user32[Ô] (ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib [Ô]user32[Ô] Alias [Ô]SetWindowsHookExA[Ô] (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib [Ô]user32[Ô] (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib [Ô]user32[Ô] (ByVal hHook As Long) As Long
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const VK_TAB = &H9
Public Const VK_ESCAPE = &H1B
Public Const VK_SHIFT = &H10 [ô]Tecla SHIFT
Public Const VK_CONTROL = &H11 [ô]Tecla CTRL
Public Const VK_MENU = &H12 [ô]Tecla ALT
Public Const VK_LWIN = &H5B
Public Const VK_RWIN = &H5C
Public Const VK_APPS = &H5D
Public Const WH_KEYBOARD_LL = 13
Public Const LLKHF_ALTDOWN = &H20
Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Dim p As KBDLLHOOKSTRUCT
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory p, ByVal lParam, Len(p)
fEatKeystroke = _
p.vkCode = VK_LWIN Or _
p.vkCode = VK_RWIN Or _
p.vkCode = VK_APPS Or _
p.vkCode = VK_CONTROL Or _
p.vkCode = VK_SHIFT Or _
p.vkCode = VK_MENU Or _
((GetKeyState(VK_CONTROL) And &H8000) <> 0) Or _
((p.flags And LLKHF_ALTDOWN) <> 0)
End If
End If
If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function
[ô]Para Usar no seu formulário ou no botão
[ô]
[ô]Desabilita Crtl-Esc+Alt-Tab+Alt-Esc
Option Explicit
Dim hhkLowLevelKybd As Long
Private Sub ChkDesabilita_Click()
If ChkDesabilita = vbChecked Then
hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
Else
UnhookWindowsHookEx hhkLowLevelKybd
hhkLowLevelKybd = 0
End If
End Sub
[ô]Quando vc sair da sua proteção de tela
[ô]
Private Sub Form_Unload(Cancel As Integer)
If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
End Sub
Eu encontei esse código aquÃ. E para evitar problemas na configuração da minha máquina a minha pergunta é: será que bastaria colocar somente o codigo da tecla F2 ?
Onde devo implementar o código?
Desde já obrigadão.
Eis o código:
[ô]Desabilita Crtl-Esc+Alt-Tab+Alt-Esc- Windows Xp/2000 *
[ô]Coloca isso em um módulo
Option Explicit
Public Declare Sub CopyMemory Lib [Ô]kernel32[Ô] Alias [Ô]RtlMoveMemory[Ô] (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib [Ô]user32[Ô] (ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib [Ô]user32[Ô] Alias [Ô]SetWindowsHookExA[Ô] (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib [Ô]user32[Ô] (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib [Ô]user32[Ô] (ByVal hHook As Long) As Long
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const VK_TAB = &H9
Public Const VK_ESCAPE = &H1B
Public Const VK_SHIFT = &H10 [ô]Tecla SHIFT
Public Const VK_CONTROL = &H11 [ô]Tecla CTRL
Public Const VK_MENU = &H12 [ô]Tecla ALT
Public Const VK_LWIN = &H5B
Public Const VK_RWIN = &H5C
Public Const VK_APPS = &H5D
Public Const WH_KEYBOARD_LL = 13
Public Const LLKHF_ALTDOWN = &H20
Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Dim p As KBDLLHOOKSTRUCT
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory p, ByVal lParam, Len(p)
fEatKeystroke = _
p.vkCode = VK_LWIN Or _
p.vkCode = VK_RWIN Or _
p.vkCode = VK_APPS Or _
p.vkCode = VK_CONTROL Or _
p.vkCode = VK_SHIFT Or _
p.vkCode = VK_MENU Or _
((GetKeyState(VK_CONTROL) And &H8000) <> 0) Or _
((p.flags And LLKHF_ALTDOWN) <> 0)
End If
End If
If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function
[ô]Para Usar no seu formulário ou no botão
[ô]
[ô]Desabilita Crtl-Esc+Alt-Tab+Alt-Esc
Option Explicit
Dim hhkLowLevelKybd As Long
Private Sub ChkDesabilita_Click()
If ChkDesabilita = vbChecked Then
hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
Else
UnhookWindowsHookEx hhkLowLevelKybd
hhkLowLevelKybd = 0
End If
End Sub
[ô]Quando vc sair da sua proteção de tela
[ô]
Private Sub Form_Unload(Cancel As Integer)
If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
End Sub
Tópico encerrado , respostas não são mais permitidas