2016-12-05 3 views
1

Sur le système Windows, appuyez sur Win + L verrouille le poste de travail. Y a-t-il un moyen de détecter l'addon XUL lorsque le poste de travail est verrouillé? Je pourrais probablement détecter en appuyant sur cette combinaison de touches, mais cela ne fonctionnerait que si l'application XUL est mise au point.Recevoir une notification lorsque le poste de travail est verrouillé

Il existe un sleep_notification disponible lorsque l'ordinateur passe en mode veille (ou se réveille). Je ne trouve aucune information sur le verrouillage de la station de travail.

+0

La seule option est js-ctypes. Mais avez-vous lu le blog à propos de WebExtensions? Ils vont interdire tout sauf webextensions d'ici fin 2017 - webext a une API qui vous permet de savoir quand l'économiseur d'écran se déclenche je pense. Avec webextension, la seule façon de le faire est via la messagerie native. – Noitidart

+0

Thunderbird, Waterfox et Palemoon continueront à utiliser XUL, donc c'est encore viable. Js-ctypes signifierait bibliothèques externes et non système-à-système compatible? Et qu'est ce que la "messagerie native"? – vanowm

+0

js-ctypes est compatible système à système, mais pas de plate-forme à plate-forme. Vous devez donc le faire une fois pour mac, linux et windows. La messagerie native est similaire, sauf qu'au lieu de js-ctypes, vous utilisez du C++ ou quoi que ce soit ou même du Javascript (application Electron) et cela peut tout faire et vous pouvez le connecter à votre extension via la messagerie native. Le problème est, que binaire (Electron ou C++ app) vous devez héberger sur votre site Web et vos utilisateurs doivent maintenant installer votre addon d'AMO, puis allez aussi installer votre app store. Une option est de ne pas utiliser AMO et avoir l'application côté charger l'addon. – Noitidart

Répondre

0

trouvé un moyen utilisant js-ctypes (testé sur Windows 10):

Components.utils.import("resource://gre/modules/ctypes.jsm"); 
var lib   = ctypes.open("user32.dll"), 
    openDesktop = lib.declare("OpenDesktopA", ctypes.winapi_abi, ctypes.uint32_t, ctypes.char.ptr, ctypes.uint32_t, ctypes.bool, ctypes.uint32_t), 
    switchDesktop = lib.declare("SwitchDesktop", ctypes.winapi_abi, ctypes.bool, ctypes.uint32_t), 
    closeDesktop = lib.declare("CloseDesktop", ctypes.winapi_abi, ctypes.bool, ctypes.uint32_t), 
    desktop  = openDesktop("Default", 0, 0, 0x0100), 
    isUnLocked = switchDesktop(desktop); 

console.log(isUnLocked);//result false = locked, true = unlocked 

closeDesktop(desktop); 
lib.close();