icons - 在跳转列表中为任务设置图标(Windows)

标签 icons electron jump-list

我正在尝试为我的Electron应用程序在Jump List的“任务”部分中设置一个图标。我已经成功在任务栏中设置了一个图标。但我也想在跳转列表的“任务”部分中设置我的图标。我怎样才能做到这一点?

我已经尝试使用app.setUserTask()方法并尝试在JSON文件中设置图标。任务栏中的图标及其自身的图标正在工作。我也尝试使用.ico和.png。

说明和标题有效,所以我想我在执行错误的操作或类似操作。 ico和png图像与我的main.js(用于Electron)位于同一目录中。

app.setUserTasks([
    {
      program: process.execPath,
      arguments: '--new-window',
      iconPath: path.join(__dirname,"icon.ico").execPath,
      iconIndex: 1,
      title: 'myApp',
      description: 'myApp'
    }
  ])

最佳答案

首先,看起来您在iconPath中混淆了两件事。根据Electron docs,您可以使用process.execPath来引用应用程序可执行文件或使用任何其他绝对路径。由于path.join返回一个字符串,因此它没有execPath属性。其次,我将iconIndex更改为0。

在Windows 7和Electron 4.1.4上进行了以下测试:

PNG文件似乎根本不起作用-您需要将ICO文件用于跳转列表。此外,无法从asar中获取图标。这意味着您需要直接在文件系统中使用ICO,并且需要提供指向它的绝对路径。

完整的代码示例:

const {app, BrowserWindow} = require('electron')
const path = require('path')
const os = require('os')

let my_path

my_path = "C:\\icon.png"                                // doesn't work
my_path = "C:\\icon.ico"                                // works
my_path = process.execPath                              // works (uses application icon)
my_path = path.join(__dirname, "icon.png")              // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.png
my_path = path.join(__dirname, "icon.ico")              // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.ico
my_path = path.join(app.getAppPath(), "icon.ico")       // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.ico
my_path = path.join(__dirname, "..", "..", "icon.ico")  // works if icon.ico is in the same directory
                                                        // as the exe "packaged" by electron-packager, assuming icon.ico is copied in


if (os.platform() == "win32") {
    app.setUserTasks([{
        program: process.execPath,
        arguments: '--new-window',
        iconPath: my_path,
        iconIndex: 0,
        title: 'My App',
        description: 'Description of myApp'
    }])
}

let mainWindow

app.on('ready', () => {
    mainWindow = new BrowserWindow()

    mainWindow.on('closed', () => {
        mainWindow = null
        app.quit()
    })
})

在这里,doesn't work表示Windows显示默认图标。我确保icon.pngicon.icoapp.asar中。

关于icons - 在跳转列表中为任务设置图标(Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734616/

相关文章:

c++ - 更改Windows 7/8跳转列表上MFC应用程序的应用程序标题

css - 更改 fa-money 图标上的文字

javascript - 带数据库的 Electron 应用程序

javascript - Electron.Net:如何以最大化模式启动窗口?

c# - 如何将 'Pin this program to the taskbar' 添加到 Windows 7 的跳转列表中?

c# - JumpList.GetJumpList 不包含最近的项目

c++ - 如何在 Visual C++ 2008 Express Edition 中为我的程序设置图标?

xamarin - UWP 中的应用程序图标

angular - Mat-icon 不显示图标

javascript - 从 Electron 的全局快捷方式调用 React 组件中的方法