-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpreload.js
More file actions
51 lines (43 loc) · 1.45 KB
/
preload.js
File metadata and controls
51 lines (43 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const { contextBridge, ipcRenderer } = require("electron");
const electron = require("electron");
// 设置控制台输出编码
process.env.LANG = "zh_CN.UTF-8";
// 使用Buffer来确保正确的编码输出
const logWithEncoding = (message) => {
if (typeof message === "string") {
console.log(Buffer.from(message, "utf8").toString());
} else {
console.log(message);
}
};
logWithEncoding("简化版preload脚本已加载");
logWithEncoding("electron对象: " + typeof electron);
logWithEncoding(
"electron中的desktopCapturer: " + typeof electron.desktopCapturer
);
contextBridge.exposeInMainWorld("electronAPI", {
captureScreen: async () => {
logWithEncoding("captureScreen函数被调用");
try {
// 通过IPC调用主进程来获取屏幕源
const sources = await ipcRenderer.invoke("get-sources");
logWithEncoding("屏幕源: " + (sources ? sources.length : 0));
return sources;
} catch (error) {
const errorMsg = "捕获屏幕时出错: " + (error.message || error);
logWithEncoding(errorMsg);
throw error;
}
},
saveFile: (buffer, format) =>
ipcRenderer.send("save-recording", buffer, format),
onSaveComplete: (callback) => {
ipcRenderer.on("save-recording-response", (_event, response) =>
callback(response)
);
return true;
},
minimizeWindow: () => ipcRenderer.send("minimize-window"),
// 显示主窗口
showWindow: () => ipcRenderer.send("show-window"),
});