C# 通过UWP应用程序从Win32应用程序显示模式对话框

C# 通过UWP应用程序从Win32应用程序显示模式对话框,c#,winapi,uwp,microsoft-edge,appcontainer,C#,Winapi,Uwp,Microsoft Edge,Appcontainer,在我们显示对话框时,是否有一种方法可以让流程通过单独流程的UWP应用程序(特别是MS Edge)显示模式对话框,或者阻止用户与UWP应用程序的任何交互 背景 我们有一个应用程序,根据用户的操作,它会不时地通过在不同的应用程序上方显示模式对话框来请求用户提供额外的信息,在用户与模式对话框交互时阻止用户输入 对于通常的Win32应用程序,我们可以只显示一个WinForms模式对话框,并将其窗口所有者设置为原始应用程序,这样就可以正常工作,例如 dialog.ShowDialog(GetTargetW

在我们显示对话框时,是否有一种方法可以让流程通过单独流程的UWP应用程序(特别是MS Edge)显示模式对话框,或者阻止用户与UWP应用程序的任何交互

背景

我们有一个应用程序,根据用户的操作,它会不时地通过在不同的应用程序上方显示模式对话框来请求用户提供额外的信息,在用户与模式对话框交互时阻止用户输入

对于通常的Win32应用程序,我们可以只显示一个WinForms模式对话框,并将其窗口所有者设置为原始应用程序,这样就可以正常工作,例如

dialog.ShowDialog(GetTargetWindow());
但是,这不适用于UWP应用程序。我们尝试了相同的方法,使用与UWP应用程序相关的不同HWND(如
ApplicationFrameWindow
Windows.UI.Core.CoreWindow
ApplicationFrameInputSinkWindow
窗口),但似乎都不起作用。由于AppContainer隔离,这看起来不起作用


值得一提的是,这是一个企业软件,我们有一个在后台运行的系统服务,可以运行任何权限级别的代码,因此权限不应该是一个问题。

简而言之:这是合法的,但不会起作用,除非两个应用程序都为此做好了准备。MS Edge不准备建立跨流程所有者/所有者窗口关系。您的设计听起来让用户感到沮丧;他们可能会卸载你的程序。为什么你需要阻止他们使用另一个程序?有时候世界是一个令人沮丧的地方。尤其是在企业中。简言之:这是合法的,但不会起作用,除非两个应用程序都为此做好了准备。MS Edge不准备建立跨流程所有者/所有者窗口关系。您的设计听起来让用户感到沮丧;他们可能会卸载你的程序。为什么你需要阻止他们使用另一个程序?有时候世界是一个令人沮丧的地方。尤其是在企业中。