无法在桌面桥应用程序中显示共享 UI
Unable to show Share UI in desktop bridge app
在原生 UWP 应用程序中,我们可以通过调用 DataTransferManager.ShowShareUI 方法来显示共享 UI。
DataTransferManager.ShowShareUI();
在桌面桥应用程序中调用此方法引发异常:
Element not found.
This method cannot be called while the app is in the background
这是意料之中的,因为桥接应用不使用 UWP 的 UI 元素。所以我尝试使用它应该在本机 Win32 应用程序中完成的方式。
在原生 Win32 应用程序中,我们可以通过调用 DataTransferManagerHelper.ShowShareUIForWindow 方法来显示共享 UI。但是,桌面桥应用程序中的此调用(应用程序上下文中的 运行s)只会导致崩溃 explorer.exe
。如果应用程序不是 运行 作为桥接应用程序而是作为本机 Win32 应用程序,则完全相同的代码也有效。
IntPtr hwnd = new WindowInteropHelper(Application.Current.MainWindow).Handle;
DataTransferManagerHelper.ShowShareUIForWindow(hwnd);
感谢任何帮助。
更新
此问题已在版本 17024 上得到解决。我在最新的内部版本 (17101) 上成功 运行 打开共享 UI 的代码。
我已经确认这是一个错误。一旦错误修复,ShowShareUIForWindow() 将是正确的 API 来调用您的场景。
我现在已将错误分配给正确的团队。
感谢您报告问题!
更新
修复程序在 build 17024 及更高版本中可用
在原生 UWP 应用程序中,我们可以通过调用 DataTransferManager.ShowShareUI 方法来显示共享 UI。
DataTransferManager.ShowShareUI();
在桌面桥应用程序中调用此方法引发异常:
Element not found.
This method cannot be called while the app is in the background
这是意料之中的,因为桥接应用不使用 UWP 的 UI 元素。所以我尝试使用它应该在本机 Win32 应用程序中完成的方式。
在原生 Win32 应用程序中,我们可以通过调用 DataTransferManagerHelper.ShowShareUIForWindow 方法来显示共享 UI。但是,桌面桥应用程序中的此调用(应用程序上下文中的 运行s)只会导致崩溃 explorer.exe
。如果应用程序不是 运行 作为桥接应用程序而是作为本机 Win32 应用程序,则完全相同的代码也有效。
IntPtr hwnd = new WindowInteropHelper(Application.Current.MainWindow).Handle;
DataTransferManagerHelper.ShowShareUIForWindow(hwnd);
感谢任何帮助。
更新
此问题已在版本 17024 上得到解决。我在最新的内部版本 (17101) 上成功 运行 打开共享 UI 的代码。
我已经确认这是一个错误。一旦错误修复,ShowShareUIForWindow() 将是正确的 API 来调用您的场景。
我现在已将错误分配给正确的团队。
感谢您报告问题!
更新
修复程序在 build 17024 及更高版本中可用