带有UI的Microsoft Edge扩展

时间:2017-03-13 21:29:07

标签: c# uwp microsoft-edge microsoft-edge-extension

有没有办法使用原生消息传递模块的边缘扩展来显示模态对话框?

背景

我正在开发企业Edge扩展,该扩展应该监视用户的某些活动并在某些条件下显示自定义模式UI。我使用inprocess本机消息传递UWP模块创建了一个简单的扩展,并尝试显示简单的消息框。

显然,OnAppServiceRequestReceived处理程序中的代码如下:

var dialog = new MessageDialog("Test");
await dialog.ShowAsync();

不起作用并提供跟随错误

An exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.ni.dll but was not handled in user code

WinRT information: This API must be called from a thread with a CoreWindow or a window must have been set explicitly.

不确定是否有可能以某种方式获取Edge主窗口或创建自己的UI线程以便能够处理它。我也尝试过这种方式:

await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
    async () =>
    {
        // UI update code goes here!
        var dialog = new MessageDialog("Your message here");
        await dialog.ShowAsync();
    });

但是它给出了NullReferenceException,这意味着代码在单独的通用Windows应用程序中执行,但是我想知道是否可以在同一进程中访问父app。

我会感激您的任何想法。

更新16.03.2017

我找到了如何从Desktop Bridge应用程序执行模态对话框。如果我使用GetForegroundWindow WinApi函数结果作为对话框的父级,一切正常。但是,如果没有Desktop Bridge组件,仍然不确定如何做到这一点。

0 个答案:

没有答案