node.js - 机器被锁定/解锁时发生的事件(Electron Windows)

标签 node.js windows electron

因此,当用户锁定计算机时,我需要通知一些任务。这是为了暂停那些任务。同样,我需要知道机器何时已成功解锁才能继续执行上述任务。这纯粹是针对Windows的唯一功能,因此不需要跨平台。

Ive查看了Electron文档,发现了有关powerMonitor API的this,但是它只包含suspendresume的事件。我认为它们是指机器进入休眠状态,因为锁定和解锁不会在我的机器上触发它们(Win 10)。

我对Windows及其消息/事件系统的工作原理知之甚少。但是我发现this列出了有关WM_WTSSESSION_CHANGE的信息,这似乎是我所需要的。尤其是WTS_SESSION_LOCK (0x7)WTS_SESSION_UNLOCK (0x8)状态码。

但是我找不到用 Electron 或NodeJS直接监听Windows消息的方法。

关于这个问题的任何建议将不胜感激。谢谢

最佳答案

您可以使用“electron-edge-js”来完成此操作

解决方法如下:

if( process.platform == 'win32' || process.platform == 'win64' ) {
    var edge = require( 'electron-edge-js' );

    var checkLockStatus = edge.func( function() {/*
        using System;
        using System.Threading.Tasks;
        using Microsoft.Win32;
        using System.Collections.Generic;

        public class Startup : IDisposable
        {
            private Func<object, Task<object>> callbackFn;
            public async Task<object> Invoke(IDictionary<string, object> input)
            {
                callbackFn = (Func<object, Task<object>>)input["callbackFn"];
                SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
                return null;

            }

            public async void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
            {
                 if (e.Reason == SessionSwitchReason.SessionLock)
                {
                    callbackFn( "locked" );
                }
                else if (e.Reason == SessionSwitchReason.SessionUnlock)
                {
                   callbackFn( "unlocked" );
                }
            }

            public void Dispose()
            {
                SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
            }
        }
    */} );

    checkLockStatus( {
        callbackFn: function( state ) {
            console.log( state );
        }
    } );
}

关于node.js - 机器被锁定/解锁时发生的事件(Electron Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931506/

相关文章:

windows - 如何在cmd中调用嵌套程序

javascript - Electron 安装程序完整性检查失败

javascript - javascript, Electron ,ipc不给出错误或输出

javascript - NodeJs :- Take values from the first dropdown and populate the values in the second dropdown dynamically

javascript - 如何使用 JavaScript 在 HTML 数据表中从 MySQL 表中可视化 > 1000 行?

c++ - 执行属于其他进程的外部功能

windows - 使用Windows网络共享目录时, Mercurial 储存库损坏

javascript - 如何从 Node js发布ajax请求中读取数据?

node.js - 如何模拟 irc 服务器断开连接以测试我的 nodejs irc 机器人?

node.js - 来自 Electron Node 服务的 Windows 通知