react+electron获取windows便笺内容
·
1.下载需要用到的依赖
npm install electron-rebuild bindings file-uri-to-path sqlite3
package.json的scripts中需要添加:第一条是本地运行时需要的,第二条是package打包需要的,可以根据需要添加到dev/package的命令中一起运行,第三条是自动安装Electron应用所需的特定依赖项
"dev-rebuild-sqlite3": "electron-rebuild -f -w sqlite3",
"package-rebuild-sqlite3": "electron-rebuild -f -w sqlite3 --arch=ia32",
"postinstall": "electron-builder install-app-deps"
2.主进程main.ts中webPreferences.contextIsolation:false// 必须关闭,否则渲染进程无法直接访问原生模块
3.build-electron 的build.js配置为:
"asarUnpack": [
"node_modules/sqlite3/**/*", // 解压 sqlite3 所有文件
"node_modules/bindings/**/*", // 解压 bindings 模块
"node_modules/file-uri-to-path/**/*" // 解压 file-uri-to-path 模块
],
"extraResources": [
{
from: "node_modules/sqlite3/lib/binding/",
to: "resources/sqlite3/binding/",
filter: ["**/*"]
}
],
"files": [
......//其他模块
"./node_modules/sqlite3/**/*", // 显式包含 sqlite3 模块
"./node_modules/bindings/**/*", // 显式包含 bindings 模块
"./node_modules/file-uri-to-path/**/*", // 显式包含 file-uri-to-path 模块
],
"win": {
"icon": iconPath,
"target": [
{
"target": "nsis",
"arch": [
"ia32"
]
}
]
}
4.渲染进程调用方法
demoToget = async () => {
try {
// 通过 window 对象动态加载模块
const path = (window as any).require?.("path");
const homedir = (window as any).require('os').homedir();
const sqlite3 = require('sqlite3').verbose();
const stickyNotesPath = path.join(
homedir,
'AppData/Local/Packages',
'Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe',//win10-win11
'LocalState/plum.sqlite'
);
console.warn('便签数据库数据路径', stickyNotesPath, sqlite3)
const db = new sqlite3.Database(stickyNotesPath, sqlite3.OPEN_READONLY, (err: any) => {
if (err) {
console.error('无法打开数据库: ' + err.message);
}
});
db.all("SELECT * FROM Note", [], (err: any, rows: any) => {
if (err) {
console.error('查询失败: ' + err.message);
} else {
for (let i in rows) {
let obj = JSON.parse(rows[i].LastServerVersion)
for (let j in obj.document.blocks) {
for (let m in obj.document.blocks[j].content) {
console.warn('单行内容:', obj.document.blocks[j].content[m].text)
}
}
}
}
db.close();
});
} catch (error) {
console.error('获取便签内容报错', error);
}
};
更多推荐


所有评论(0)