如何在Windows Phone 8中以编程方式锁定屏幕?

时间:2014-05-30 17:11:36

标签: windows-phone-8

我们可以使用以下代码阻止屏幕锁定

PhoneApplicationService.Current.ApplicationIdleMode = IdleDetectionMode.Disabled 

PhoneApplicationService.Current.UserIdleDetectionMode= IdleDetectionMode.Disabled 

但如何从我的应用程序锁定屏幕。像下面的应用程序

http://www.windowsphone.com/en-us/store/app/one-touch-lockscreen/a3b1220b-1f9a-4bf0-93bc-21ed02792279

提前致谢

3 个答案:

答案 0 :(得分:2)

非常黑客。它不在官方API中,因此它可以随时停止工作,就像音量控制API一样。无论如何,你想要它,你需要使用这个外部方法:

[System.Runtime.InteropServices.DllImport("ShellChromeAPI.dll")]
private extern static void Shell_TurnScreenOn(bool value);

对于WP8.0应用程序,这需要在Windows运行时组件中(您应该引用其输出,因为无法引用项目)。

据我所知,这对WP8.1设备不起作用,所以你需要一个单独的WP8.1应用程序,我认为它需要是一个XAML(Windows Store)应用程序

答案 1 :(得分:2)

@yasen写的是正确的。

[DllImport("ShellChromeAPI.dll")]
private extern static void Shell_TurnScreenOn(bool value);

我尝试过以下情况:
运行时8.1 C#(通过商店认证)
带运行时组件8.1 C#的运行时8.1 C ++(尚未尝试在商店中发布此内容)
Silverlight / DirectX 8.0 C ++(通过商店认证)

这是我的应用程序的链接,它使用上面提到的最后一个解决方案 http://www.windowsphone.com/s?appid=38bf5918-025e-4f23-b515-2cac451a84ab

我听说过使用Silverlight支持8.0和8.1的商店案例。

答案 2 :(得分:1)

您可以通过Windows.Phone.System.SystemProtection.ScreenLocked

获取屏幕是否已锁定

但遗憾的是,no way

中的代码会锁定屏幕Windows Phone 7.x or 8.