Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NativeImage在Electron中的setOverlayIcon()中不工作_Javascript_Windows_Electron - Fatal编程技术网

Javascript NativeImage在Electron中的setOverlayIcon()中不工作

Javascript NativeImage在Electron中的setOverlayIcon()中不工作,javascript,windows,electron,Javascript,Windows,Electron,我正在尝试为我的应用程序的任务栏图标(Windows 10)制作一个数字徽章。我把它作为一个起点,并对它做了一些修改。创建徽章后,我在渲染器过程中使用了以下设置: var electron=require('electron'), remote=electron.remote, nativeImage=electron.nativeImage; ... var win=remote.getCurrentWindow(); ... var badgeDataURL=canv

我正在尝试为我的应用程序的任务栏图标(Windows 10)制作一个数字徽章。我把它作为一个起点,并对它做了一些修改。创建徽章后,我在渲染器过程中使用了以下设置:

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);
ipcRenderer.send('update-badge', canvas.toDataURL())
运行此命令会导致以下错误:

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
Uncaught错误:无法调用远程函数“setOverlayIcon”。检查函数签名是否正确。基础错误:处理索引0处的参数时出错,从的转换失败#
错误:无法调用远程函数“setOverlayIcon”。检查函数签名是否正确。基础错误:处理索引0处的参数时出错,从的转换失败#
调用函数时(A:\electron\resources\electron.asar\browser\rpc server.js:235:11)

在黄昏时分。表示
setOverlayIcon
期望第一个参数为
NativeImage
类型,我在任何地方都找不到有效的示例。有什么想法吗?

对我来说,
setOverlayIcon
需要从主进程运行。以下是我这边的修正:

在我的渲染器过程中:

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);
ipcRenderer.send('update-badge', canvas.toDataURL())
在我的主要过程中:

ipcMain.on('update-badge', (event, data) => {
    let img = nativeImage.createFromDataURL(data)
    win.setOverlayIcon(img, 'description')
}