Node.js 运行win32函数时出现电子/节点ffi错误
我正在尝试从electron 4(节点10.x)调用Win32函数,但我发现了一个对我来说不太清楚的错误 我正在使用以下代码:Node.js 运行win32函数时出现电子/节点ffi错误,node.js,typescript,winapi,ffi,node-ffi,Node.js,Typescript,Winapi,Ffi,Node Ffi,我正在尝试从electron 4(节点10.x)调用Win32函数,但我发现了一个对我来说不太清楚的错误 我正在使用以下代码: import * as ffi from 'ffi'; import * as Struct from 'ref-struct'; import * as ref from "ref"; const ABM_NEW = 0x0, ABM_REMOVE = 0x1, ABM_QUERYPOS = 0x2, ABM_SETPOS = 0x3
import * as ffi from 'ffi';
import * as Struct from 'ref-struct';
import * as ref from "ref";
const
ABM_NEW = 0x0,
ABM_REMOVE = 0x1,
ABM_QUERYPOS = 0x2,
ABM_SETPOS = 0x3;
const RECT_Struct = new Struct({
left: ref.types.long,
top: ref.types.long,
right: ref.types.long,
bottom: ref.types.long
});
const APPBARDATA_Struct = new Struct({
cbSize: ref.types.uint32,
hWnd: ref.refType(ref.types.void),
uCallbackMessage: ref.types.uint32,
uEdge: ref.types.uint32,
rc: ref.refType(RECT_Struct),
lParam: ref.types.int64
});
export const shell32 = ffi.Library('shell32.dll', {
SHAppBarMessage: [ 'pointer', [ 'int', 'pointer']]
});
export function registerAppBar(windowHandle: any) {
let data = new APPBARDATA_Struct();
data.cbSize = APPBARDATA_Struct.size;
data.hWnd = windowHandle;
data.uCallbackMessage = 1234;
let res = shell32.SHAppBarMessage(ABM_NEW, data);
}
然后在电子背景下:
registerAppBar(mainWindow.getNativeWindowHandle());
我得到的错误是“TypeError:错误设置参数1-WritePoint:缓冲区实例应作为第三个参数”,我不知道为什么会发生这种情况
非常感谢您的任何帮助/想法
我要做的是注册一个electron窗口,使其成为一个应用程序工具栏,根据需要传递给
SHAppBarMessage
的第二个参数是指向APPBARDATA\u结构的指针,请参见以下链接:
此外,APPBARDATA_Struct
中的rc
不是structPtr。需要传递到SHAppBarMessage
的第二个参数是指向APPBARDATA_Struct
的指针,请参见以下链接:
另外,APPBARDATA\u Struct
中的rc
不是structPtr。使用我得到的结果是使用这个:
export const shell32 = ffi.Library('shell32.dll', {
SHAppBarMessage: [ 'pointer', [ 'int', APPBARDATA_Struct]]
});
与Drake Wo评论中的建议类似,但没有“”且未使用ref.refType
现在,函数返回true:D,使用以下命令,我得到了它:
export const shell32 = ffi.Library('shell32.dll', {
SHAppBarMessage: [ 'pointer', [ 'int', APPBARDATA_Struct]]
});
与Drake Wo评论中的建议类似,但没有“”且未使用ref.refType
现在,函数返回true:D,不幸的是,它无法100%工作。我现在没有收到错误,但是函数没有效果(返回false),很遗憾,它不能100%工作。我现在没有得到错误,但是函数没有效果(返回false)