【问题标题】:JavaScript, UWP: Backgroundtask tracking keypress eventsJavaScript、UWP:Backgroundtask 跟踪按键事件
【发布时间】:2017-07-10 08:37:36
【问题描述】:

嘿,我是通用 Windows 平台和所属 API 的新手。 我正在尝试在 JS 中构建一个 UWP 应用程序。

问题 1: 我将如何初始化和监听后台任务(在 js 中)?

问题 2: 如果可能的话,后台任务将如何监听特定组合的任何按键。

【问题讨论】:

    标签: javascript jquery visual-studio winapi uwp


    【解决方案1】:

    问题 1:如何初始化和监听后台任务(在 js 中)?

    1. 首先,您需要创建一个运行时组件并创建一个BackgroundTask 类,它实现了Windows.ApplicationModel.Background.IBackgroundTask。详情请参考Official DocumentCreate a BackgroundTask Class部分。
    2. 其次,在package.appxmanifest中注册backgroundTask:

    3. 三、在js代码中注册backgroundTask:

      (function () {
      "use strict"
      //Initialization
      var Background = Windows.ApplicationModel.Background;
      //Register
      var taskBuilder = new Background.BackgroundTaskBuilder();
      taskBuilder.name = "MyBackgroundTask";
      //init trigger
      var appTrigger = new Background.ApplicationTrigger();
      taskBuilder.taskEntryPoint = "MyRuntimeComponent.MyBackgroundTask";
      taskBuilder.setTrigger(appTrigger);
      //Check if background task already registered
      var taskRegistered = false;
      var iter = Background.BackgroundTaskRegistration.allTasks.first();
      var hascur=iter.hasCurrent;
      while (hascur)
      {
          var current = iter.current.value;
          if (current.name == "MyBackgroundTask")
          {
              taskRegistered = true;
              break;
          }
          iter.moveNext();
      }
      
      if (!taskRegistered)
      {
          taskBuilder.register();
      }
      
      //click event
      document.getElementById("btnClick").onclick = function (evt)
      {
          appTrigger.requestAsync().then(function (result) {
              var abc = result;
          }, function (err) {
              console.log(err);
          })
      }
      })();
      

    问题 2:如果可能,后台任务如何监听特定组合的任何按键。

    您可以为您的后台任务设置ApplicationTrigger,并在点击事件函数中调用ApplicationTrigger.requestAsync

    document.getElementById("btnClick").onclick = function (evt)
    {
        appTrigger.requestAsync().then(function (result) {
            var abc = result;
        }, function (err) {
            console.log(err);
        })
    }
    })();
    

    【讨论】:

    • 感谢您提供的非常有帮助的帖子!执行js初始化时出现以下错误:0x80040154 - JavaScript runtime error: Class not registered所以我猜有些调用的Class尚未初始化。我也不确定将运行时组件链接到 UWP 项目。所以我在引用下链接了组件(不知道是不是错了)-here如果需要,你可以找到源
    • 我能够解决这个问题。在onclick 事件中,我应该用什么来代替appTrigger
    • appTrigger 是我在代码中由var appTrigger = new Background.ApplicationTrigger(); 初始化的ApplicationTrigger
    • 嗯,好的。以及(问题 2)我将如何(在 C# 中)监听按键事件?
    • 如果您的意思是希望 backgroundTask 监听按键事件并在RuntimeComponent 中注册按键处理程序。没有办法做到这一点。 BackgroundTask 在单独的进程中运行,而您的按键事件在 UI 线程中运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多