2017-02-20 59 views
0

嘿,我是通用Windows平台和所属API的新手。 我想在JS中构建一个UWP应用程序。JavaScript,UWP:Backgroundtask跟踪按键事件

问题1: 我该如何初始化并侦听后台任务(在js中)?

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

回答

1

Question 1: How would I initialize and listen for a background task (in js)?

  1. 首先,你需要创建一个运行时组件,并创建一个BackgroundTask类,它实现Windows.ApplicationModel.Background.IBackgroundTask。有关详细信息,请参阅Create a BackgroundTask Class部分Official Document
  2. 其次,注册backgroundTask在package.appxmanifestenter image description here

  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); 
        }) 
    } 
    })(); 
    

Question 2: And how, if possible, would the background task listen for any keypress of a specific combination.

您可以为您backgroundtask和设置ApplicationTrigger点击事件函数调用ApplicationTrigger.requestAsync

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

非常感谢您的帮助!当我执行js初始化时,出现以下错误:'0x80040154 - JavaScript运行时错误:类未注册'所以我猜一些被调用的类尚未初始化。我也不确定将运行时组件链接到UWP项目。所以我链接组件下的引用(不知道这是错误的) - [这里](https://github.com/jonhue/my_clipboard)你可以找到源,如果需要 – jonhue

+0

我能够解决这个问题。我应该在'onclick'事件中取代appTrigger? – jonhue

+0

'appTrigger'是'ApplicationTrigger'我用'VAR appTrigger =新Background.ApplicationTrigger()初始化;'在我的代码 –