Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
120
Assunto : Visual Basic
Titulo: Registrando uma HotKey no Visual Basic

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O Windows nos permite registrar uma tecla de atalho no sistema. Com uma tecla de atalho registrada, em qualquer aplicação em que o usuário pressionar a tecla de atalho nossa aplicação será chamada. Isso só funciona, porém, se a aplicação já estiver sendo executada.

Para processar o recebimento da HotKey precisaremos novamente utilizar o recurso de subclassing para interceptar a mensagem enviada pelo windows a respeito da HotKey.

Veja o código do form :

Option Explicit
Public OldWndProc As Long

Private Sub Form_Load()
Dim Ret As Long
'Registra hotkey com ID 1
'Essa hotkey sera aciona com ALT + F2
'Se Ret <> 0 entao beleza, se = 0 já
'existe uma hotkey dessa definida
Ret = RegisterHotKey(Me.hwnd, 1, MOD_ALT, _
VK_F2)

'Inicia subclassing

OldWndProc = SetWindowLong(Me.hwnd, _
GWL_WNDPROC, AddressOf _
WindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Cancel = False
Call SetWindowLong(Me.hwnd, GWL_WNDPROC, _
OldWndProc)
End Sub

'
' Metodo chamado pela Hotkey
'
Public Sub BahMetodo()
MsgBox "Opa !"
End Sub


Este código registra a hotkey e ativa o subclassing (load) e desfaz o subclassing (unload). O BahMetodo é o método chamado pela hotkey.

No módulo entram as declarações de API e a função que será chamada para processar as mensagens do form. Veja :

Option Explicit
Private Const WM_HOTKEY = &H312

Public Declare Function RegisterHotKey Lib _
"user32" (ByVal hwnd As Long, ByVal _
id As Long, ByVal fsModifiers As _
Long, ByVal vk As Long) As Long
'
' Modificadores
'
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4

' Tecla que será nossa hotkey
Public Const VK_F2 = &H71

#If UNICODE Then
Public Declare Function SetWindowLong Lib _
"user32" Alias "SetWindowLongW" _
(ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Any) _
As Long
#Else
Public Declare Function SetWindowLong Lib _
"user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex _
As Long, ByVal dwNewLong As Any) _
As Long
#End If
Private Declare Function CallWindowProc Lib _
"user32" Alias "CallWindowProcA" _
(ByVal wndrpcPrev As Long, ByVal _
hwnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, lParam As _
Any) As Long
Public Const GWL_USERDATA = (-21)
Public Const GWL_WNDPROC = -4

Public Function WindowProc(ByVal hwnd As _
Long, ByVal uMsg As Long, ByVal _
wParam As Long, ByVal lParam As _
Long) As Long
On Error Resume Next
If uMsg = WM_HOTKEY And wParam = 1 Then
'wParam informa o ID da hotkey
Form1.BahMetodo
WindowProc = 1
Exit Function
End If
If Form1.OldWndProc <> 0 Then
WindowProc = CallWindowProc(Form1.OldWndProc, _
hwnd, uMsg, wParam, ByVal lParam)
End If
End Function


Quando é identificada a mensagem de hotkey pela função que processa as mensagens do form o bahmetodo é chamado.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 3/21/2011 7:46:00 PM
nome: lucas
email: joaolucas1@yahoo.com.br
comentário:
Alexandre ... e so vc adicionar um endereço vazio na hotkey ...

data: 12/2/2006 10:33:00 PM
nome: alexandre
email: alexandre.pisani.ant@itelefonica.com.br
comentário:
Show de bola.

Teria um jeito de desabilitar o ctrl+alt+del ?

Obrigado


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br