【发布时间】:2023-03-10 20:54:01
【问题描述】:
我有一个已发布到 Windows 应用商店的 UWP 应用程序,该应用程序可以启动到展台模式(分配的访问权限)。 效果很好,但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕。我尝试了文档中给出的代码(https://msdn.microsoft.com/library/windows/hardware/mt633799%28v=vs.85%29.aspx):
LockApplicationHost lockHost = LockApplicationHost.GetForCurrentView();
if (lockHost != null)
{
lockHost.RequestUnlock();
}
但我点击了按钮,应用程序只是关闭并重新打开。但是不要退出信息亭模式...我在商店里有一个例外,但它是空的。
有人可以帮我理解这个问题吗?
编辑
这是个例外:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at Windows.ApplicationModel.LockScreen.LockApplicationHost.GetForCurrentView()
at Kiwi.Views.Shell.CloseButton_Tapped(Object sender, RoutedEventArgs e)
【问题讨论】:
-
我无法在我身边重现您的问题。我认为您可以尝试一个新的空白项目,只需一个按钮即可再次对其进行测试。正如文档所说:“如果 kiosk 应用程序意外结束,分配的访问框架会尝试重新启动它。”,您可以尝试使用 Unlocking event 并退出应用程序,如在示例中。
-
我尝试了一个空白项目,问题是一样的。但是问题只出现在 x64 平台上,而不是 x86 !当应用程序尝试向 Windows 发送信号时,我认为这可能是 Int32 和 Int64 的通信问题......
-
这很奇怪。我还用 x64 平台进行了测试,效果很好。你用其他设备测试过吗?他们有同样的问题吗?此外,设置here 可能也有帮助。
-
我尝试了 5 种不同的设备(4 个 x64 和一个 x86),它只适用于 x86。您是否针对特定平台进行编译?我在按钮的“Tapped”事件中调用方法,对吗?
-
我已经找到解决方案,我会发布答案。非常感谢您的帮助!
标签: c# uwp windows-10 kiosk