Tag: node ffi

节点ffi Recttypes

我想要使​​用node-ffi和user32库在节点中获取特定窗口的大小。 无法使Rect指针工作,我得到NULL作为输出或致命的错误。 https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx 出 LPRECT lpRect应该包含左上angular和右下angular的坐标。 var ffi = require('ffi'); var ref = require('ref'); var Struct = require('ref-struct'); var lpctstr = { name: 'lpctstr', indirection: 1, size: ref.sizeof.pointer, get: function(buffer, offset) { var _buf = buffer.readPointer(offset); if(_buf.isNull()) { return null; } return _buf.readCString(0); }, set: function(buffer, offset, value) { var _buf = ref.allocCString(value, 'ucs2'); return […]

我怎样才能在nodejs窗口截图?

我在研究中find一种方法来使用nodejs来截取窗口的截图,我正在尝试使用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 EDITED 我在C ++中find了以下工作代码 Bitmap […]

node-ffi:dynamic链接错误

我有一个C ++方法(哪个angular色正在杀死一些进程),在一个库Risk.dll中。 另一方面,我正在开发一个在Google Chrome上运行的networking应用程序(使用Nodejs和AngularJS)。 当我通过浏览器单击button时,我希望能够通过我的app.js文件调用C ++函数。 我决定使用Node-ffi,但是我有错误: Error: Dynamic Linking Error: "Risk.dll": 这是我在javascript上的代码: var ffi = require('ffi') //Kill Server socket.on('killserver', function(date){ var cTest = ffi.Library("Risk", { "DateModified":["long", ["string"] ] }); var res = cTest.DateModified(date); console.log(res) }); 在C ++中,我已经完成了 extern C{ } 而我想补充一点,我的文件Risk.dll与文件server.js在同一个文件中,当我想要使用我的应用程序时,我使用Node运行。 任何线索?

将焦点从Node-JS设置到Windows应用程序

我有一个在Windows上运行的NodeJS应用程序,当用户执行特定操作时,需要显示并将焦点切换到正在运行的Windows应用程序。 我一直在使用node-ffi包进行windows API调用,但一直无法使焦点切换。 这是我正在使用的代码。 它成功地得到了正在运行的Calculator应用程序的HWND,但是随后尝试将焦点切换到该HWND,并且它仅在有时才起作用: var ffi = require('ffi'); var intPtr = ref.refType('long'); var user32 = new ffi.Library('user32', { 'FindWindowA': ['long', [ 'string', 'string']], 'SetForegroundWindow': ['bool', ['long']], 'BringWindowToTop': ['bool', ['long']], }); var winToSetOnTop = user32.FindWindowA(null,"calculator") var res = user32.ShowWindow(winToSetOnTop, 9); res = user32.SetForegroundWindow(winToSetOnTop); res = user32.BringWindowToTop(winToSetOnTop); 这些命令的组合似乎与我所尝试过的最一致,但并不一直工作。 如果我想要将焦点切换到最小的窗口,它将始终popup到顶部。 如果窗口不是最小化的,而是在另一个窗口的后面,它将只会间歇显示。 我不知道如何始终如一地让运行的Windows应用程序始终移动到订单的顶部,即使它当前已经最小化了。

使用节点js的pAnisChar调用Delphi stdcall函数

我有一个传统的Delphi DLL需要一个JSONstring作为input(pAnsiChar),并返回一个int作为成功或失败。 我设法使用node-ffi从nodejs连接到dll。 但是,我正在返回int值的值无效的jsonstring。 有人能指出我如何调用一个delphiDLL与pAnsiChar作为节点的函数参数 谢谢

是否有可能使用ref-struct和ref-array创build一个结构数组?

我正在使用node-ffi来调用一个将outparam作为指针指向结构数组的指针的函数。 有没有办法使用ref-struct和ref-array来访问我所得到的数组? struct = require("ref-struct"); var rect_type = struct({ 'x': 'int', 'y': 'int', 'width': 'int', 'height': 'int', }); var rotation_type = struct({ 'yaw': 'short', 'pitch': 'short', 'roll': 'short' }); var face_type = struct({ 'rect' : rect_type, 'rotation' : rotation_type, 'confidence' : 'double' }); 我能够得到第一个结构,在函数调用后的指针,但我无法得到数组的其余部分: var mylib = ffi.Library('lib/libN', { 'GetFaces' : [ 'int', [ 'pointer' […]

是否有可能创build一个node.js模块使用c库monetdb连接?

我正在尝试连接monetdb与monetdb 我有一个简单的(20行)c程序,可以使用mapi库查询moentdb 。 我可以使用这些库来构buildnode.js (module / addon),它使用这些库并连接到monetdb ? (使用odbc是一个选项,但它有它自己的缺点。) 更新1: node-ffi非常棒。 我能够很容易地创build一个表格程序。 (例如,我已经添加了我的工作代码。) 所以如果我有3个选项 1. ODBC 2.节点-ffi 3. ac程序获取数据库数据并通过socket监听来自node.js的连接 就性能而言这是更好的select,如果我没有多less时间开发node.js的插件 var ffi = require("ffi"); var libmylibrary = ffi.Library('/usr/local/lib/libmapi.so', { "mapi_connect":["int",["string",'int',"string","string","string","string"]], "mapi_query":['int',["int","string"]], "mapi_fetch_row":["int",["int"]], "mapi_fetch_field":["string",["int","int"]] }); var res = libmylibrary.mapi_connect("localhost", 50000,"monetdb", "monetdb", "sql", "demo"); console.log(res); var ret=libmylibrary.mapi_query(res,"select * from table"); while(libmylibrary.mapi_fetch_row(ret)){ console.log(libmylibrary.mapi_fetch_field(ret,0)); console.log(libmylibrary.mapi_fetch_field(ret,1)); } 更新2: 以上代码不推荐用于生产…它不使用node.js的asynchronousfunction,所以请使用它的婴儿步骤

从Node.js调用C ++库(Node addons / node-ffi)

我正在尝试将外部C ++库(我可以访问.so文件以及头文件)集成到我的Node.js应用程序中。 经过大量的研究,我的select被缩减为: 编写一个节点插件 使用node-ffi 从node-ffi的gitHub的定义,我不能确定它会或不会直接在C ++库上工作: node-ffi是一个用于使用纯JavaScript加载和调用dynamic库的Node.js插件。 它可以用来在不编写任何C ++代码的情况下创build与本地库的绑定。 所以我的问题是: 选项1)是否意味着以某种方式重写外部C ++库? node-ffi是否能够直接调用C ++库,而不需要任何forms的C封装器? 我不是C / C ++的专家,所以如果我错过了一些基本的东西可以回答,请让我知道,这样我可以改善我的问题。

C语言分析器在Javascript中

我想用JavaScriptparsingC头文件。 有没有这样的图书馆? 否则,任何提示,以帮助我开始? 更新:我的最终目标是自动为node-ffi构build接口。 parsing器不一定必须使用Javascript,只要它可以吐出Javascript可以理解的格式即可。 如果我自己很难发展,我可能不得不采用现成的解决scheme…?

Node-webkit WinAPI

我正在为Windows(Vista,7,…)开发简单的node-webkit应用程序,我需要使用一些WinAPI函数,特别是RegisterHotKey和SendInput来绑定系统范围的热键,并根据这些热键进行击键。 没有node-webkit提供的API,所以我想用node-ffi来调用这个函数。 我是WinAPI开发新手,所以我已经阅读了一些MSDN手册,但是发现大部分示例都创build窗口,消息循环,消息处理过程等等。 所以我不太明白,如何实现从node-webkit正确调用WinAPI,而不创build单独的窗口? Node-ffi教程不包括这种情况,所以我find了节点Windows库,但似乎只是通过节点来实现Windows应用程序。 有没有办法实现本地调用而不创buildWindows应用程序? 什么是正确的方法来做到这一点?