问题标签 [node-ffi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
901 浏览

winapi - 带有 node-ffi 的 Win32 api 格式消息

我正在尝试使用 node-ffi 与 win32 api FormatMessageA 进行交互,但是我似乎无法获取 out lpBuffer 参数,这是一段代码来显示我尝试过的内容

我知道函数是成功的,因为它返回 57 但是我无法获得包含我需要的错误字符串的 lpBuffer 值。

0 投票
4 回答
24688 浏览

javascript - 如何在 Node.js 中截取窗口截图?

我正在进行一项研究,以找到一种使用 Node.js 截取窗口屏幕截图的方法,并且我正在尝试使用 node-ffi 来执行此操作,但我不知道如何......一次我我卡在这里:

结果:

已编辑

我在 C++ 中找到了以下工作代码

现在我需要在 NodeJs 上执行此操作,

任何人都可以帮助我吗?

0 投票
1 回答
215 浏览

node.js - Node.js - 将`fork()` 与 node-ffi 或附加组件一起使用是否安全?

我正在编写一些脚本来跟踪子进程。但是,我不想编写 C 代码,所以我正在考虑使用 node-ffi 模块来处理这些东西。但是我必须分叉一个新进程并调用 execve() 然后运行子进程。那安全吗?

fork()我的意思是 POSIX 分叉,而不是child_process.fork(). 请问如果子进程和父进程共享同一个文件描述符,会不会有什么问题(比如父子进程读取同一个需要的.js文件)?

0 投票
0 回答
507 浏览

javascript - 结构数组作为 OUT 参数从 C 到 JS 使用 node-ffi、ref-array 和 ref-struct

我正在使用 node-ffi 将 JS 与 C 库集成。我想出了将复杂结构作为 IN 参数传递并获得单个结构作为 OUT 参数的方法。但是,我无法从 C 中成功获取结构数组并在 JS 中对其进行迭代。我有以下 C 结构和 API。

我已经在 J​​S 端模拟它并调用 C API 如下

我可以打印并检查值是否在 C 内部的 out 参数中正确填充。但我无法在 JS 端打印值。它要么因 Seg 故障而失败或未定义。

任何建议都会有很大帮助!

0 投票
2 回答
511 浏览

node.js - 检测用户何时解锁工作站

我试图检测用户何时解锁他们的工作站。以下代码尝试使用 WTSRegisterSessionNotification() 注册窗口以接收会话更改消息。据说在此之后我可以收听 WM_WTSSESSION_CHANGE ,它可以包含 WTS_SESSION_UNLOCK 作为参数。

问题:目前 WTSRegisterSessionNotification() 总是返回 false。

有谁知道我怎么能做到这一点?我在 Windows 10 顺便说一句。

IInspectable 推荐 GetLastError()。不幸的是,这不是 node-ffi 支持的。 https://github.com/node-ffi/node-ffi/issues/261

0 投票
1 回答
76 浏览

javascript - 使用 Node-ffi 写入文件

将 Node-ffi 与 C 一起使用来写入文件是一种好方法吗?

还是使用流并直接在javascript代码中编写更好?

0 投票
1 回答
147 浏览

node-ffi - 无法让 node-ffi 模块工作

仅出于测试目的,我在 delphi 中创建了一个小 DLL。代码是:

我只想用这个 nodejs 代码运行这样简单的东西:

问题是我在控制台上看到“1”和“2”,没有别的。请帮忙,有什么想法吗?

提前致谢

0 投票
1 回答
1810 浏览

javascript - 来自 C++ 线程的节点 FFI 回调

我今天遇到了一个令人沮丧的问题。我正在使用node-ffi在我的电子应用程序中运行 C++ 代码。总的来说,我有很好的经验,但是我今天开始使用多线程并遇到了一些困难。我传入的ffi回调是从线程调用的就好了。但是,当我结束循环并尝试join将循环线程连接到主线程时,它会完全冻结电子应用程序。

完全免责声明:我对 C++ 还很陌生,如果对我的代码提供任何反馈以改进它,我将不胜感激,尤其是您认为我应该注意的任何危险信号。

这里有两个 repos 演示了我遇到的错误:
Electron Project - https://github.com/JakeDluhy/threading-test
C++ DLL - https://github.com/JakeDluhy/ThreadedDll

以下是我正在做的事情的概述:
在我的 dll 中,我公开了开始/结束会话和开始/停止流式传输的函数。这些调用类实例的引用来实际实现功能。本质上,它是更强大的 C++ 类的 C 包装器。

下面是这个Threader类的样子:

然后这是我使用它的测试javascript:

主电子进程在 app.js 中运行。我希望看到

但它显示没有end session。但是,如果我删除frameReadyCB()c++ 中的行,它会按预期工作。所以不知何故 ffi 回调引用搞砸了多线程环境。很想对此有一些想法。谢谢!

0 投票
0 回答
285 浏览

c - 使用 ref 传递和读取针对本机函数的 C 三指针

我在本机 C 库中有一个函数,它具有以下标头,我从节点调用:

参数是一个缓冲区,dataBuf将由函数填充一个二维数组,大小为 X (10) x Y (10000)。我也能够在节点端获得这些长度。(因为它们因文件而异)

我正在使用node-ffiref模块来调用该函数。简而言之,这就是我已经拥有的:

我尝试使用 ref-array 库做一些事情,它对一维数组非常有效,但我从来没有让它与二维数组一起使用,因为它假设因为数组长度(元素)是静态的,所以必须是以字节为单位的数组。(不适用于二维数组)

我应该如何从节点中的指针读取二维数组?

0 投票
1 回答
939 浏览

node.js - 如何初始化结构节点-ffi 结构

我在 linux 上有图书馆。该库具有结构。该库的手册说必须初始化结构,如下所示:

struDeviceInfo — 从设备输出数据,我必须阅读和使用。
我如何在 Nodejs 中编写代码。PS:我使用node-ffi模块,库初始化并连接到设备完成ok。