我正在尝试为我的应用程序的任务栏图标(Windows 10)创建一个数字徽章。我已经将this code用作起点并对其进行了一些修改。创建徽章后,我已使用以下内容在渲染器过程中对其进行设置:
var electron=require('electron'),
remote=electron.remote,
nativeImage=electron.nativeImage;
...
var win=remote.getCurrentWindow();
...
var badgeDataURL=canvas.toDataURL();
var img=nativeImage.createFromDataURL(badgeDataURL);
win.setOverlayIcon(img,''+n);
运行此命令会出现以下错误:
Uncaught Error: Could not call remote function 'setOverlayIcon'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
Error: Could not call remote function 'setOverlayIcon'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
at callFunction (A:\electron\resources\electron.asar\browser\rpc-server.js:235:11)
at EventEmitter.<anonymous> (A:\electron\resources\electron.asar\browser\rpc-server.js:342:5)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:201:7)
at WebContents.<anonymous> (A:\electron\resources\electron.asar\browser\api\web-contents.js:231:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:191:7)metaToValue @ A:\electron\resources\electron.asar\renderer\api\remote.js:217remoteMemberFunction @ A:\electron\resources\electron.asar\renderer\api\remote.js:113electronSetBadge @ app.js:81updateBadge @ app.js:156initClick @ app.js:183(anonymous function) @ app.js:203dispatch @ jquery-1.12.4.min.js:3r.handle @ jquery-1.12.4.min.js:3
我尝试了以下方法:
badgeDataURL
和img
的内容,它是有效的图像setOverlayIcon
:win.setOverlayIcon(__dirname+'/pics/badge.png',''+n)
(有效)win.setOverlayIcon(null,'')
也可以使用尽管the documentation表示
setOverlayIcon
期望第一个参数为NativeImage
类型,但我无法在任何地方找到有效的示例。有任何想法吗? 最佳答案
对我来说,setOverlayIcon
需要从主进程运行。这是固定在我这一边的东西:
在我的渲染器过程中:
ipcRenderer.send('update-badge', canvas.toDataURL())
在我的主要过程中:
ipcMain.on('update-badge', (event, data) => {
let img = nativeImage.createFromDataURL(data)
win.setOverlayIcon(img, 'description')
}