我有一个使用AxShockwaveFlash控件显示Flash Media全屏的应用程序。
我需要在鼠标单击时关闭窗口,但是当AxShockwaveFlash控件处于活动状态时,我无法捕获鼠标单击。
Click和MouseDown事件不起作用。
在我的应用程序中,我尝试在应用程序中使用MouseDown事件,支持网格和控制'主机',但没有人收到click事件的通知。
由于我的应用程序的其他区域处理此事件很好,它必须是Flash控件。
代码:
_flashHost = new System.Windows.Forms.Integration.WindowsFormsHost();
_axShockwaveFlash = new AxShockwaveFlashObjects.AxShockwaveFlash();
_flashHost.Child = _axShockwaveFlash;
_flashHost.Margin = new Thickness(50, 0, 0, 0);
this.FlashGrid.Children.Add(_flashHost);
_axShockwaveFlash.BeginInit();
_axShockwaveFlash.CreateControl();
_axShockwaveFlash.Menu = false;
_axShockwaveFlash.FlashVars = "start_volume=0";
_axShockwaveFlash.Movie = loadedMediaItem.LocalMediaFile.LocalPath;
_axShockwaveFlash.Play();
XAML
<Window x:Class="CorporateScreenSaver.MediaContainerWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Media" Height="421" Width="600" ShowInTaskbar="False" Topmost="True" WindowState="Maximized" ResizeMode="NoResize" WindowStyle="None" Background="Black" Loaded="MainWindow_OnLoaded" MouseDown="MainWindow_OnMouseDown" KeyDown="MainWindow_OnKeyDown">
<Grid Name="MediaGrid">
<Grid Name="FlashGrid"></Grid>
<MediaElement Name="MediaViewPort"/>
</Grid>
</Window>
如何通过某些全局挂钩或订阅AxShockwaveFlash控件来捕获click事件?
答案 0 :(得分:0)
似乎我捕获鼠标单击的唯一方法是使用以下内容。
http://globalmousekeyhook.codeplex.com/
工作得非常好。
using MouseKeyboardActivityMonitor;
using MouseKeyboardActivityMonitor.WinApi;
using MouseEventArgs = System.Windows.Forms.MouseEventArgs;
private readonly MouseHookListener _mMouseHookManager;
_mMouseHookManager = new MouseHookListener(new GlobalHooker()) {Enabled = true};
_mMouseHookManager.MouseDown += HookManager_MouseDown;