Я преобразовываю свой проект winforms в WPF, а также изучаю WPF, пока я это делаю.WPF VB.NET WM_APPCOMMAND
я столкнулся с проблемой с этим кодом
Этот код определяет кнопки нажаты на медиа-клавиатуре или Media Center пульт дистанционного управления.
Protected Overrides Sub WndProc(ByRef msg As Message)
If msg.Msg = &H319 Then
' WM_APPCOMMAND message
' extract cmd from LPARAM (as GET_APPCOMMAND_LPARAM macro does)
Dim cmd As Integer = CInt(CUInt(msg.LParam) >> 16 And Not &HF000)
Select Case cmd
Case 13
MessageBox.Show("Stop Button")
Exit Select
Case 47
MessageBox.Show("Pause Button")
Exit Select
Case 46
MessageBox.Show("Play Button")
Exit Select
End Select
End If
MyBase.WndProc(msg)
end sub
Мне было интересно, есть ли способ заставить его работать в WPF или, возможно, сделать что-то подобное.
Редактировать
Моя последняя попытка, я попытался преобразовать его из C#, так что, возможно, будет неправильно. (Это просто падает мое приложение)
Dim src As HwndSource = HwndSource.FromHwnd(New WindowInteropHelper(Me).Handle)
src.AddHook(New HwndSourceHook(AddressOf WndProc))
и
Public Function WndProc(hwnd As IntPtr, msg As Integer, wParam As IntPtr, lParam As IntPtr, ByRef handled As Boolean) As IntPtr
'Do something here
If msg = "WM_APPCOMMAND" Then
MessageBox.Show("dd")
End If
Return IntPtr.Zero
End Function
Am я на правильном пути, или я далеко?
Итак, вы хотите, чтобы переопределить WndProc в приложении WPF? –
Да, если нет более легкого способа захвата мультимедийных клавиш. – Mattigins
Возможный дубликат [Как обрабатывать сообщения WndProc в WPF?] (Http://stackoverflow.com/questions/624367/how-to-handle-wndproc-messages-in-wpf) –