资源管理器重启后 electron 隐藏任务栏图标失效问题的解决方案
Jun 11, 2021
1. 问题现象 #
创建一个electron 窗口,设置skipTaskbar为true,即可隐藏应用的任务栏图标。
const {app, BrowserWindow} = require('electron')
function createWindow () {
const mainWindow = new BrowserWindow({
skipTaskbar: true
})
mainWindow.loadURL('https://www.baidu.com')
}
app.whenReady().then(() => {
createWindow()
})
但是,重启资源管理器之后,任务栏的图标又会出现。
2. 解决方案 #
需要获取系统的资源管理器重启(伴随任务栏重建)事件,在事件处理中重新隐藏图标。
electron中可以通过hookWindowMessage
来hook系统消息,但是任务栏的创建事件,是没有具体Windows Message ID
的,需要通过Windows API RegisterWindowMessage
来注册一个。
所以,封装了一个win-util的包,提供了这个API的调用。
完整代码如下:
const {app, BrowserWindow} = require('electron')
const winutil = require('win-util')
function createWindow () {
const mainWindow = new BrowserWindow({
skipTaskbar: true
})
var msgid = winutil().RegisterWindowMessage('TaskbarCreated')
mainWindow.hookWindowMessage(msgid,(wParam,lParam)=>{
console.log("TaskbarCreated");
mainWindow.setSkipTaskbar(true)
});
mainWindow.loadURL('https://www.baidu.com')
}
app.whenReady().then(() => {
createWindow()
})