我正在研究寻找一种使用 Node.js 截取窗口屏幕截图的方法,并且我正在尝试使用 node-ffi 执行此操作,但我不知道如何……一次我’我卡在这里:
var ffi = require('ffi');
var user32 = new ffi.Library("user32", {
FindWindowA: [ 'uint32' , [ 'string', 'string' ]]
, PrintWindow: [ 'int32' , [ 'int32', 'string', 'int32' ]]
});
var IMG;
var windowHandle = user32.FindWindowA(null, "Calculator");
var printWin = user32.PrintWindow(windowHandle, IMG, 0);
console.log(printWin);
console.log(IMG);
结果:
$ node get-print.js
1
undefined
已编辑
我在 C++ 中找到了以下工作代码
Bitmap bm = new Bitmap(1024, 768);
Graphics g = Graphics.FromImage(bm);
IntPtr hdc = g.GetHdc();
Form1.PrintWindow(this.Handle, hdc, 0);
g.ReleaseHdc(hdc);
g.Flush();
g.Dispose();
this.pictureBox1.Image = bm;
现在我需要在 NodeJs 上做这个,
任何人都可以帮助我吗?
原文由 Daniel de Andrade Varela 发布,翻译遵循 CC BY-SA 4.0 许可协议
虽然我没有完整的代码工作,但理论上如果你能够在 C++ 中这样做,那么只需使用 node-gyp 将 C++ 文件编译为 .node 文件,然后将其包含在你的 nodeJS 文件中.
所以一些示例伪代码,首先在一个新目录中创建一个 binding.gyp 文件,然后将一些代码放入其中,如下所示:
然后在同一个目录中(现在)创建另一个名为
hi.cc
的文件,并将您的 C++ 代码放入其中,再加上一些其他文件以从中创建一个节点模块。所以,根据上面提到的文档,你可以做这样的事情(未经测试):然后确保您确实安装了 node-gyp 和正确的构建工具(请参阅上面的文档,但它几乎是
npm i -g node-gyp
),然后转到构建 -> 发布 -> addon.node 并将其复制到你的主 nodeJS 目录,然后创建一个新的 nodeJS 文件或在现有文件中包含以下内容: