node-ffi ffi.Library往电脑窗口的任意光标处输入内容(user32.dll)window电脑

2023-10-27

node ffi ffi.Library往电脑窗口的任意光标处输入内容(user32.dll)window电脑

类似键盘输入法的效果

我node项目和electron项目遇到需求:控件上输入任意的文字,在其他的窗口显示。
已解决!

前提:

这是user32.dll 的API
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-enumwindows
electron 使用 node-ffi 调用 C++ 动态链接库(DLL)
引入各种环境和架包毕竟你要调系统的C++的内容肯定需要编译的

npm install --global --production windows-build-tools
npm install -g node-gyp
装Python v2.7; 不能装>=3版本,否则编译不通过
npm install ffi
npm install ref
npm install electron-rebuild
npm run rebuild 操作即可完成electron的重编译。
cd进入node_modules/ffi目录执行如下
node-gyp rebuild --target=2.0.4 --arch=x64 --dist-url=https://npm.taobao.org/mirrors/atom/

遇到问题:

一开始我是这么写的。有问题,进去确认是发出去了消息,但是记事本、word、 资源管理器、等没有收到。所以没显示出来。

const ffi=require("ffi");
const ref = require('ref')
const path = require('path');
setTimeout(()=>{
   
		//let user32 = path.resolve('resources/dll/user32.dll');
		const Dlls = ffi.Library('user32.dll', {
   
			 'GetActiveWindow':['int',[]],
			 'GetFocus':['int',[]],
			 'ReleaseCapture':['bool',[]],
			 'GetForegroundWindow':['int',[]],
			 'SetForegroundWindow':['bool',['int']],
			 'SetActiveWindow':['bool',['int']],
			 'UpdateWindow':['bool',['int']],
			 'BringWindowToTop':['int',['int']],
			 'SetFocus':['int',['int']],
			 'ShowWindow':['int', ['int','int']],
			 'keybd_event':['void',['int'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

node-ffi ffi.Library往电脑窗口的任意光标处输入内容(user32.dll)window电脑 的相关文章

  • MATLAB数值计算——矩阵运算乘法、除法、乘方

    一 矩阵 矩阵是线性代数的基本单元 矩阵含有M行N列数值 矩阵中的元素可以是实数或复数 矩阵相关的基本运算 加 减 内积 逆矩阵 转置 线性方程式 特征值 特征向量 矩阵分解 二 矩阵的运算 2 1 矩阵的乘法运算 运算符 矩阵乘法 矩阵对
  • catalog java,Java Connection getCatalog()方法与示例

    通常 目录是一个目录 其中包含有关数据集 文件或数据库的信息 而数据库目录中包含所有数据库 基本表 视图 虚拟表 同义词 值范围 索引 用户和用户组的列表 Connection接口的getCatalog 方法返回当前连接对象的当前目录 数据
  • 计量经济学学习与Stata应用笔记(五)极大似然估计MLE

    极大似然估计的思想 就是在给定样本值的情况下 构建未知参数的函数 寻找能够使得观测到样本数据的可能性最大的估计参数 定义似然函数为 L y 1
  • TVM中python访问c++函数机制

    data TVM tvm python tvm ffi registry py data TVM tvm python tvm ffi registry py data TVM tvm python tvm ffi ctypes packe
  • Win11系统恢复经典的右键菜单方法(CMD快速执行)

    cmd执行 Win11切换经典右键菜单 reg add HKCU Software Classes CLSID 86ca1aa0 34aa 4e8b a509 50c905bae2a2 InprocServer32 f ve taskkil
  • 彻底卸载VS2013/VS2015及以上版本

    1 彻底卸载Visual Studio 2015 教你如何彻底Visual Studio 2013 Visual Studio 2015及以上版本 解决很多人卸载不干净的问题 2 工具 原料 外国一款叫Visual Studio Unins
  • kafka producer java API的实现

    1 开发环境的构建 使用IDEA MAVEN构建开发环境 可以采用Maven中scala archetype simple模板 2 pom xml的配置 这里scala版本为2 11 8 kafka版本为0 9 0 0
  • 全志A64触摸屏驱动调试

    一 前言 linux的触摸屏驱动一般要经历一下几个步骤 以4412为例 1 移植驱动到linux源码 driver input touchscreen 目录下 在Kconfig里面增加这款触摸屏驱动的菜单 add by long 20170
  • C语言-指针辨析(一)

    C语言 指针辨析 一 int num 9 int p num printf p 0x x n p printf p 0x x n p printf p 0x x n p printf p 0x x n p p 0x62fe1c p 0x9
  • Unity3D脚本中文系列教程(四)

    二 运行时类 AnimationCurve 类 动画曲线 在给定的时间添加关键帧并确定曲线 变量 var keys Keyframe 描述 定义在动画曲线中的所有键 这让你从数组中清理 添加或移除键 如果键没有按照时间顺序 它们会在赋值的时
  • 网络发送数据结构

    根据自定义数据结构 通过网络进行发送并解析数据 数据结构定义 ifndef TYPE H define TYPE H struct NetDataHeader int DataType int DataSize struct NetData
  • 使用多线程+easyexcel实现异步号码导入

    使用多线程 easyexcel实现异步号码导入 需求 最近项目需要实现excel文件上传批量导入号码 实现 通过多线程 easyexcel的方式实战一手 不多说 上代码 欢迎各位大佬指正 环境 springboot 2 6 13 mybat
  • go 版本管理器(g)源码阅读笔记

    go 版本管理器 g 源码阅读笔记 一个 go 版本管理工具 原文作者 suhanyujie 文章来自 https github com suhanyujie article transfer rs ps 水平有限 如有不当之处 欢迎指正
  • 行列式及其性质

    行列式 determinant 是方阵的一个重要特征 常记作detA或者 A 其包含了矩阵的很多重要信息 行列式为0 则矩阵不可逆 否则矩阵可逆 所以行列式可用来检验矩阵的可逆性 这篇文章主要介绍行列式的10个性质 性质1 单位矩阵的行列式
  • 员工身份管理(EIAM)如何帮助企业降本增效?

    随着市场竞争的加剧和经济环境的变化 降本增效成为了现代企业的共同目标 要实现这一目标 企业需要彻底改变传统的生产管理方式 借助数字化技术来实现数据在线 人员在线和行为在线 数据在线意味着企业的数据可以在多个平台上进行共享 协同和分析 从而大
  • Hbase工作原理

    Hbase HBase 底层原理详解 深度好文 建议收藏 腾讯云开发者社区 腾讯云 Hbase架构图 同一个列族如果有多个store 那么这些store在不同的region Hbase写流程 读比写慢 MemStore Flush Hbas
  • 利用Python实现闹钟功能

    今天心血来潮 想用Python实现一个类似于闹钟的事项提示工具 在坐各位都知道 平常敲代码总是会忘记时间一坐一上午 这样对身体是不好的 所以我今天就要使用Python实现定时提醒功能 在敲代码之前大致分析一下需要使用到的模块 语音播报模块
  • 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码

    一 项目概述 简介 该垃圾分类项目主要在于对各种垃圾进行所属归类 本次项目采用keras深度学习框架搭建卷积神经网络模型实现图像分类 最终移植在树莓派上进行实时视频流的垃圾识别 前期 主要考虑PC端性能 并尽可能优化模型大小 训练可采用GP
  • 滚动条 ScrollView与Listview 嵌套 无滚动条实现滚动

    问题 ListView有时只显示一个半Item 当ListView的高度设定一定的值时 ListView同样地会显示对应的高度的Item 计算出这个ListView的总高度 再将它设置到ListView中 那么之前的滚动 高度问题就会解决

随机推荐

  • html最新布局书籍,HTML布局

    浏览器是怎么布局HTML的元素的 浏览器获取HTML文档后 先安置块级元素 从HTML的第一个块级元素开始 从上到下的的顺序显示所有的块级元素 一个块级元素 换行 再一个块级元素 这就是flow 块级元素内的内联元素一个挨一个的排列 一行排
  • instant-ngp获取视频或者图像相机位置信息colamp2nerf.py生成ransforms.json

    遇到的问题 在centos安装colamp需要装很多依赖 并且需要手动编译 在unbntu上安装colamp ffmpeg很方便 但是运行colamp2nerf py会报错ERROR failed to create sparse mode
  • uniapp如何引入官方的css样式库

    uniapp引入css样式 图标库 动画库 uniapp如何引入官方的css样式库 1 项目目录新建一个common的文件夹 common一般存放的是项目引入的一个css和js样式库 2 将样式库的css或者js复制到common文件夹 3
  • Three.js创建文字初体验

    效果 首先引入必要组件 import build three js import libs js controls OrbitControls js import FontLoader from libs jsm loaders FontL
  • 蓝桥杯基础练习所有VIP习题解析代码

    阶乘计算 资源限制 时间限制 1 0s 内存限制 512 0MB 问题描述 输入一个正整数n 输出n 的值 其中n 123 n 算法描述 n 可能很大 而计算机能表示的整数范围有限 需要使用高精度计算的方法 使用一个数组A来表示一个大整数a
  • Mysql 乱码问题--如何查看和修改Mysql 的字符集

    MySQL会出现中文乱码的原因不外乎下列几点 1 server本身设定问题 例如还停留在latin1 2 table的语系设定问题 包含character与collation 3 客户端程式 例如php 的连线语系设定问题 强烈建议使用ut
  • Linux下安装openldap

    Linux下安装openldap 1 安装Berkeley DB 4 7 25 伯克利大学嵌入式数据库方案 openldap用它作为存储方案 root instance 0pk09gjj ldap wget http download or
  • DAC芯片CBM128S085

    一 硬件介绍 1 1 芯片内部框架图 1 2 CBM12S085引脚定义 引脚介绍 DAC SYNC 电平触发控制输入 低电平有效 SCLK 时钟输入 DAC DIN 串行数据输入 VOUTA H则是对应的8个电压模拟输出通道 二 软件实现
  • 找出数组中每个数的右边第一个比它大的数

    vector
  • 人工智能 猴子摘香蕉问题

    1 定义描述环境状态的谓词 AT x w x在w处 个体域 x monkey w a b c box HOLD x t x手中拿着t 个体域 t box banana EMPTY x x手中是空的 ON t y t在y处 个体域 y b c
  • 三角形

    1 2 3 4 5 6
  • function 与 => 的区别

    function 与 的区别主要是他们的作用域的不同 在JS中 箭头函数并不是简单的function 匿名函数的简写语法糖 实际上 箭头函数和匿名函数有个明显的区别 gt 箭头函数内部的this是词法作用域 在编写函数时就已经确定了 fun
  • CentOS8.4安装Redis6.2.6

    一 下载 官网 Redis 我们下载 Stable 稳定版 cd mydata wget https download redis io releases redis 6 2 6 tar gz 二 安装redis6 2 6 1 安装到 us
  • python编一函数s(x) 求级数和_Python 编程基础之高阶函数篇(一)

    高阶函数 能接受函数作为参数的函数 如 f abs def add x y f return f x f y 如果我们用 add 5 9 f 来调用该高阶函数 则返回结果为 14 abs是Python提供的求绝对值的函数 Python中的m
  • Django实现音乐网站 ⒅

    使用Python Django框架做一个音乐网站 本篇主要为歌单列表 歌单详情及推荐页 歌单内容改动 目录 歌单列表 设置路由 视图处理 模板渲染 歌单 单曲列表 设置路由 视图处理 模板渲染 推荐页 歌单列表 模板渲染修改 总结 歌单列表
  • C语言字节数

    bool 1字节 char 1字节 short 2字节 string 4字节 int 4字节 指针4字节 float 4字节 double 8字节 long 4或8字节 long long 8字节 long double 12字节 空类1字
  • ArcFace loss与其他改进loss对比

    ArcFace loss与其他改进loss对比 sphereFace A softmax cos ma 角度距离 cosFace AM softmax cosa m 余弦距离 ArcFace Arc softmax cos a m 角度距离
  • ICCV, ECCV, CVPR,IEEE的关系

    计算机视觉领域世界三大顶级会议分别为CVPR ICCV和ECCV CVPR CVPR 英文全称IEEE Conference on Computer Vision and Pattern Recognition 中文全称是国际计算机视觉与模
  • FeignClient中name和url属性的作用

    定义 feign是声明式的web service客户端 它让微服务之间的调用变得更简单了 类似controller调用service Spring Cloud集成了Ribbon和Eureka 可在使用Feign时提供负载均衡的http客户端
  • node-ffi ffi.Library往电脑窗口的任意光标处输入内容(user32.dll)window电脑

    node ffi ffi Library往电脑窗口的任意光标处输入内容 user32 dll window电脑 类似键盘输入法的效果 前提 遇到问题 解决问题了 补充安装库遇到的问题 类似键盘输入法的效果 我node项目和electron项