有没有办法使用原生消息传递模块的边缘扩展来显示模态对话框?
背景
我正在开发企业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组件,仍然不确定如何做到这一点。