有没有办法使用带有本机消息传递模块的边缘扩展来显示模式对话框?
背景
我正在开发一个企业 Edge 扩展,它应该监视用户的某些活动并在某些条件下显示自定义模式 UI。我使用进程内本机消息传递 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 应用程序中执行,但是我想知道是否可以在同一进程中访问父应用程序。
我会很感激你的任何想法。
更新 16.03.2017
我发现了如何从桌面桥应用程序中进行模式对话框。如果我使用 GetForegroundWindow WinApi 函数结果作为对话框的父级,一切正常。但是仍然不确定如何在没有桌面桥组件的情况下做到这一点。