Electron利用ffi-napi屏蔽键盘消息

Electron自带的键盘屏蔽无法满足要求的时候:比如屏蔽Alt+F4 或者Alt+Tab的

我们可以考虑使用ffi-napi调用dll的方式。利用C++的钩子函数进行键盘或者鼠标事件的屏蔽。中途遇到了几个坑。记录一下

1.无法识别HWND的问题

var handle = win.getNativeWindowHandle()
获取到Electron的窗口句柄。但是在传参的时候发现无法识别HWND。
const dll = ffi.Library('GHookDll', {
    'SetHook': // 声明这个dll中的一个函数
        [
            'void', ['void*'], // 用json的格式罗列其返回类型和参数类型
        ]
});

利用void*的方式传参。在dll中的时候有C++去从void*转成hwnd来使用

2. 

'ClearHook': [
        'void',['void']
    ]


一般C++中参数如果为空的时候可以直接不传即可。但在在调用释放钩子函数的时候。发现如果不传参数的话直接报参数无法是被的错误。这个时候可以在dll的ClearHook函数中 ClearHook(void)这种方式。当然也可以直接写int型。这样在Electron使用的时候。直接传个0.

目前就做键盘屏蔽的时候遇到这两个坑。

后续开发过程中发现。可以使用addon的方式自己封装。更加方便管理

开发Electron注意各个模块的版本

// electron 版本

console.log('process.versions.electron', process.versions.electron)

// ABI版本

console.log('process.versions.modules', process.versions.modules)

// NODE版本
console.log('process.versions.node', process.versions.node)

// V8 引擎版本
console.log('process.versions.v8', process.versions.v8)

// chrome版本
console.log('process.versions.chrome', process.versions.chrome)

// 架构信息
console.log('process.env.PROCESSOR_ARCHITECTURE', process.env.PROCESSOR_ARCHITECTURE)

如发现不对。欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: electron-pos-printer是一个基于Electron框架的用于打印的库。它提供了一种简单和方便的方法来控制和管理打印机。使用electron-pos-printer,开发人员可以轻松地创建POS系统或其他需要打印功能的应用程序。 electron-pos-printer支持多种类型的打印机,包括热敏打印机、针式打印机和喷墨打印机等。它提供了丰富的打印选项和功能,包括打印文本、条形码、二维码、图片等。开发人员可以根据自己的需求来自定义打印内容和样式。 除了基本的打印功能,electron-pos-printer还支持一些高级特性,例如打印预览、打印队列管理和打印任务监控等。这些功能可以帮助开发人员更好地管理打印任务,并提高打印的效率和可靠性。 electron-pos-printer的使用非常简单。开发人员只需要按照官方文档提供的指导,安装和配置打印机驱动程序,并在应用程序中使用相应的API来执行打印操作即可。 总之,electron-pos-printer是一个功能强大、易于使用的打印库,可以帮助开发人员在Electron应用程序中轻松实现各种打印需求。无论您是要创建POS系统还是其他需要打印功能的应用程序,electron-pos-printer都是一个值得考虑的选择。 ### 回答2: electron-pos-printer 是一个用于在 Electron 框架中打印 POS 小票的库。它提供了一组简单易用的 API,可以方便地与 POS 打印机进行通信。 使用 electron-pos-printer,我们可以通过配置打印机参数、定义格式化模板和设置打印内容,来生成需要打印的小票。它支持多种常见的 POS 打印机,并且可以很容易地进行扩展以支持其他新的打印机型号。 通过 electron-pos-printer,我们可以实现以下功能: 1. 属性设置:可以设置打印机的类型、端口、字符编码等属性。 2. 模板定义:支持使用 HTML、JSON 或自定义格式的模板,以灵活地定义打印内容的布局和格式。 3. 图片打印:可以将图片添加到小票中,并根据需要进行缩放、裁剪或旋转。 4. 文本打印:支持打印普通文本以及设置字体、颜色、字号等样式。 5. 条码打印:支持打印一维和二维条码,并可以设置条码类型、高度、宽度等参数。 6. 切纸功能:可以设置打印完后自动切纸,方便小票的分离。 总之,electron-pos-printer 提供了一个方便和强大的工具,使我们可以在 Electron 应用程序中轻松地实现 POS 小票的打印功能。无论是为零售、餐饮还是其他行业提供服务,都可以通过这个库来满足POS打印需求。 ### 回答3: electron-pos-printer 是一个基于 Electron 框架的打印机模块。它提供了一种简单方便的方式来在 Electron 应用程序中打印小票、标签、收据等。这个模块支持通用的打印机类型,如热敏打印机和传统打印机。 electron-pos-printer 具有以下特点: 1. 简单易用:利用这个模块可以轻松地设置和配置打印机,并通过简单的几行代码即可实现打印功能,无需繁琐的操作和深入的打印机知识。 2. 多种类型支持:支持各种类型的打印机,如 USB 打印机、串口打印机、网络打印机等。可以根据实际需求选择合适的打印机进行打印。 3. 丰富的打印选项:electron-pos-printer 提供了丰富的打印选项,包括设置纸张大小、字体样式、对齐方式、打印抬头和页脚等。这使得用户可以根据实际需求进行自定义配置,并实现更加个性化的打印效果。 4. 跨平台支持:electron-pos-printer 基于 Electron 开发,可以在多个平台上运行,包括 Windows、macOS 和 Linux。这使得开发者可以轻松实现多平台间的兼容性,并在不同设备上使用相同的打印功能。 总的来说,electron-pos-printer 是一个简单易用的打印机模块,它可以帮助开发者快速实现打印功能,并提供了丰富的选项以满足不同需求。无论是需要在收银系统、零售店或餐厅等场景中打印小票,还是需要在物流、仓储等领域中打印标签,electron-pos-printer 都能够提供便捷的解决方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值