最近开发视频播放软件使用VLC实现流媒体播放,在使用libVLC自己进行集成播放控件时发现,播放窗口picturebox不响应鼠标键盘事件,无法进行双击或鼠标全屏播放功能的实现。原因是事件被vlc sdk拦截了。在网上找了多个方法都没有解决,最终通过查看vlc.net(之所以没有直接使用vlc.net,是因为它没有自己开发的稳定,原因还不清楚)如何实现,知道了实现方法,如下:
libvlc禁用鼠标键盘事件获取的接口:
/// true on->1 false off->0
[DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] [SuppressUnmanagedCodeSecurity]
public static extern void libvlc_video_set_mouse_input(IntPtr libvlc_mediaplayer, uint status);
[DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[SuppressUnmanagedCodeSecurity]
public static extern void libvlc_video_set_key_input(IntPtr libvlc_media_player, uint b);
在播放后调用以上两个接口,就可禁用VLC拦截鼠标键盘消息了:
。。。。
LibVlcAPI.libvlc_media_player_set_hwnd(m_pmedia_player, (int)hPlayWnd); LibVlcAPI.libvlc_media_player_play(m_pmedia_player);
LibVlcAPI.libvlc_video_set_mouse_input(m_pmedia_player, 0u); LibVlcAPI.libvlc_video_set_key_input(m_pmedia_player, 0u);
。。。。