Javascript 工作站被锁定时收到通知

Javascript 工作站被锁定时收到通知,javascript,firefox-addon,xul,xulrunner,Javascript,Firefox Addon,Xul,Xulrunner,在Windows系统上,按Win+L将锁定工作站。 当工作站被锁定时,XUL插件中是否有检测方法?我可能可以检测到按下这个组合键,但它只有在XUL应用程序处于焦点时才能工作 当计算机进入睡眠模式或醒来时,有一个可用的选项。我找不到有关锁定工作站的任何信息。找到了一种使用Windows 10上测试的js ctypes的方法: Components.utils.import("resource://gre/modules/ctypes.jsm"); var lib = ctype

在Windows系统上,按Win+L将锁定工作站。 当工作站被锁定时,XUL插件中是否有检测方法?我可能可以检测到按下这个组合键,但它只有在XUL应用程序处于焦点时才能工作


当计算机进入睡眠模式或醒来时,有一个可用的选项。我找不到有关锁定工作站的任何信息。

找到了一种使用Windows 10上测试的js ctypes的方法:

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

找到了一种使用Windows 10上测试的js ctypes的方法:

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

唯一的选项是js ctypes。但是你读过关于WebExtensions的博客吗?到2017年底,他们将禁止除webextensions之外的所有内容——我想webext有一个api,可以让你知道屏幕保护程序何时启动。有了webextension,唯一的方法就是通过本地消息传递。雷鸟、Waterbox和Palemon将继续使用XUL,所以这仍然是可行的。js ctypes意味着外部库,而不是系统到系统兼容?什么是本机消息传递?js ctypes是系统到系统兼容的,但不是平台到平台的。所以你必须在mac、linux和windows上做一次。本地消息是相似的,除了使用JS cType,您可以使用实际的C++或任何东西,甚至JavaScript电子app,这样可以做任何事情,并且可以通过本地消息将它连接到扩展。问题是,二进制电子或C++应用程序必须在AMO网站上托管,用户现在必须安装来自您的AdDon,然后也可以安装应用程序商店。一个选择是不要使用AMO,让应用程序端加载插件。我想我找到了一种方法,可以通过使用OpenDesktop和SwitchDesktop来测试工作站是否被锁定。如果有人可以告诉我如何从js ctypes执行此操作,我相信我可以解决其余问题。谢谢。唯一的选择是js ctypes。但是你读过关于WebExtensions的博客吗?到2017年底,他们将禁止除webextensions之外的所有内容——我想webext有一个api,可以让你知道屏幕保护程序何时启动。有了webextension,唯一的方法就是通过本地消息传递。雷鸟、Waterbox和Palemon将继续使用XUL,所以这仍然是可行的。js ctypes意味着外部库,而不是系统到系统兼容?什么是本机消息传递?js ctypes是系统到系统兼容的,但不是平台到平台的。所以你必须在mac、linux和windows上做一次。本地消息是相似的,除了使用JS cType,您可以使用实际的C++或任何东西,甚至JavaScript电子app,这样可以做任何事情,并且可以通过本地消息将它连接到扩展。问题是,二进制电子或C++应用程序必须在AMO网站上托管,用户现在必须安装来自您的AdDon,然后也可以安装应用程序商店。一个选择是不要使用AMO,让应用程序端加载插件。我想我找到了一种方法,可以通过使用OpenDesktop和SwitchDesktop来测试工作站是否被锁定。如果有人可以告诉我如何从js ctypes执行此操作,我相信我可以解决其余问题。谢谢