2017-02-20 12 views
0

こんにちは、ユニバーサルWindowsプラットフォームとそれに所属するAPIは初めてです。 私はJSでUWPアプリケーションを構築しようとしています。JavaScript、UWP:バックグラウンドタスクのキー押しイベントのトラッキング

質問1: バックグラウンドタスク(js内)を初期化して待機するにはどうすればよいですか。

質問2: 可能であれば、バックグラウンドタスクは特定の組み合わせのキー入力をどのようにリッスンしますか。

答えて

1

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

  1. まず、あなたはランタイムコンポーネントを作成し、Windows.ApplicationModel.Background.IBackgroundTaskを実装BackgroundTaskのクラスを作成する必要があります。詳細は、Create a BackgroundTask ClassセクションのOfficial Documentを参照してください。第二に
  2. package.appxmanifestにBackgroundTaskの登録:第三 enter 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'は私のコードで' var appTrigger = new Background.ApplicationTrigger(); 'で初期化した' ApplicationTrigger'です –

関連する問題