【问题标题】:how to lock the screen programmatically in windows phone 8?如何在 Windows Phone 8 中以编程方式锁定屏幕?
【发布时间】:2014-09-22 09:47:39
【问题描述】:

我们可以使用下面的代码来防止屏幕锁定

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

提前致谢

【问题讨论】:

    标签: windows-phone-8


    【解决方案1】:

    这很hacky。它不在官方 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 应用商店)应用。

    【讨论】:

    • 实际上它在 WP8.1 中对我有用,并且在我测试它时不需要 Windows 运行时组件。 O.O(是不是因为我用的是GDR1/2?)。
    【解决方案2】:

    @yasen 写的是正确的。

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

    我尝试过以下几种情况:
    Runtime 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

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

    【讨论】:

    • 几个小时前提交了一个 c# 8.1 RT,没有通过认证: •错误发现:支持的 API 测试检测到以下错误:◦此应用程序类型不支持此 API - Api=Shell_TurnScreenOn .模块=shellchromeapi.dll。
    • 您还在为您的应用使用它还是找到了解决方法?
    • @the_nuts 从那以后我就再也没有更新过该应用程序,尽管它仍在商店中并且可以正常工作。
    【解决方案3】:

    您可以通过Windows.Phone.System.SystemProtection.ScreenLocked获取屏幕是否被锁定

    但不幸的是有no way通过Windows Phone 7.x or 8.中的代码锁定屏幕

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多