Захват события мыши в приложении, когда AxShockwaveFlash в полноэкранном режиме

У меня есть приложение, которое показывает Flash Media во весь экран, используя элемент управления AxShockwaveFlash.

Мне нужно закрыть окно щелчком мыши, однако я не могу захватить щелчок мыши, когда активен элемент управления AxShockwaveFlash.

События Click и MouseDown не работают.

В моем приложении я пытался использовать события MouseDown в приложении, поддерживающие Grid и Control 'host', но никто не получал уведомления о событии 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?

1 ответ

Решение

Кажется, единственный способ, которым я мог поймать щелчок мыши, был использовать следующее.

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;
Другие вопросы по тегам