Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pt_V1p3r

RegisterHotKey

Mensagens Recomendadas

pt_V1p3r

Boas,

Tenho um 'pequeno' grande problema o qual necessito de alguma ajuda.

Consigo controlar sem problema o registo de uma hotkey do genero ctrl+d e tudo funciona como e suposto mesmo sem focus no form.

O meu unico problema reside em que necessito que a hotkey seja do genero ctrl+alt+2+3+4, ou seja usando os 2 modifiers (ctrl+alt) que esses ja os controlo, mas depois apenas consigo usar uma unica tecla e eu necessito de mais 3.

Imports System.Runtime.InteropServices


Public Const MOD_ALT As Integer = &H1 'Alt
Public Const MOD_CONTROL As Integer = &H2 'Control
Public Const MOD_SHIFT As Integer = &H4 'shift

Public Const K_Numpad0 As Integer = &H60 'numpad 0
Public Const K_Numpad1 As Integer = &H61 'numpad 1

Public Const WM_HOTKEY As Integer = &H312

<DllImport("User32.dll")> _
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
End Function

<DllImport("User32.dll")> _
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	RegisterHotKey(Me.Handle, 100, MOD_CONTROL Or MOD_ALT, Keys.A)
	RegisterHotKey(Me.Handle, 200, MOD_ALT, K_Numpad1)
End Sub

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
	If m.Msg = WM_HOTKEY Then
		Dim id As IntPtr = m.WParam
		Select Case (id.ToString)
			Case "100"
				MessageBox.Show("CTRL+ALT+A")
			Case "200"
				MessageBox.Show("ALT+NUMPAD1")
		End Select
	End If
	MyBase.WndProc(m)
End Sub

Private Sub Form1_FormClosing(ByVal sender As System.Object, _
					ByVal e As System.Windows.Forms.FormClosingEventArgs) _
					Handles MyBase.FormClosing
	UnregisterHotKey(Me.Handle, 100)
	UnregisterHotKey(Me.Handle, 200)
End Sub

Alguem tem alguma ideia ?

Editado por Caça
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.