1

我的目标是制作一个模块,提供对用户最后一次交互的访问(客户端应用程序 - 不是服务器应用程序)。Windows API 有一个名为GetLastInputInfo( https://msdn.microsoft.com/en-us/library/windows/desktop/ms646302(v=vs.85).aspx ) 的函数。下面是应该加载时间信息的代码,last_input它返回 0/1 表示失败/成功。不幸的是,它每次都失败。

插件代码:

#include <node.h>
#include <v8.h>

#define WINDOWS_LEAN_AND_MEAN
#include <windows.h>

using namespace v8;

Handle<Value> TimeSinceInput(const Arguments& args) {
    HandleScope scope;

    LASTINPUTINFO last_input;
    if (::GetLastInputInfo(&last_input)) {
        return scope.Close(String::New("Success!"));
    }
    else {
        return scope.Close(String::New("Failed for some reason!"));
    }
}

void init(Handle<Object> exports) {
    exports->Set(String::NewSymbol("time_since_input"), FunctionTemplate::New(TimeSinceInput)->GetFunction());
}

NODE_MODULE(addon, init)

有什么想法吗?

4

1 回答 1

3

LASTINPUTINFO 结构有成员 cbSize,它应该被初始化:

结构的大小,以字节为单位。此成员必须设置为 sizeof(LASTINPUTINFO)。

这是在 Windows API 中进行版本控制的常用方法。

于 2015-05-22T06:57:43.827 回答