关于后续
距离上篇文章发布有差不多一年了,第一次写博客,开始信心满满,结果发现搜索引擎根本搜不到,于是乎觉得自己写的东西别人应该是看不到,最近无意间发现有人评论,本着自己学习,帮助他人的想法,今天完成wails悬浮球的后续。
窗体属性
由于我不是c系列的开发人员,为了隐藏wails在任务栏的图标,搜索了很多资料,甚至尝试了从任务栏所在的窗体入手修改windows的ui,虽然感觉我在绕路,但网上相关资料确实太少,总之搜索到的资料就是如果用c++写怎么怎么样就可以实现图标在任务栏隐藏,但是wails提供的窗口设置属性实在太少,在尝试了无数种办法后,只能是查看wails的源码了。
修改源码
如图经过慢慢找最终windows的窗口属性在这个位置被设置,就是我们在app.go设置的窗体属性会在这里被设置到窗体上,在第71行我加入了一行代码(我的idea能临时编辑源码)
exStyle=w32.WS_EX_NOREDIRECTIONBITMAP|w32.WS_EX_TOOLWINDOW|w32.WS_EX_TOPMOST
上面的代码作用,是创建一个混合渲染、在顶部、工具栏的窗口WS_EX_TOOLWINDOW这个属性是关键,窗口的图标不在任务栏显示,直接百度WS_EX_TOOLWINDOW这个关键字能出现详细说明。另外在这里能拓展windows窗体的各种功能。
给个边框加点样式
更好看的样式就百度各种特效,旋转啦、发光了等,wails的ui完全是个网页可以自由发挥,现在我们已经实现了大半,隐藏了任务栏图标,现在需要在系统托盘添加图标。
系统托盘图标实现
先找一张png的图片,我们就用悬浮球那张图片
先复制出来,观察build目录下,appiocn.png图片
没错你会发现这张图片就是wails的图标图片,现在你需要把桌面的那张图片修改名称替换这种图片
然后删除build ----》windows下的icon.ico
之后启动wails 运行 wails dev ,然后build ----》windows下的icon.ico会重新生成,并且是我们替换后的图片了,ico格式是图标图片,系统托盘的图标要用这种格式。接下来就是把图标放入系统托盘,这里我们使用github.com/getlantern/systray这个包来完成,详细教程可以自行百度
完整的appgo代码
package main
import (
"embed"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options/windows"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
)
//go:embed all:frontend/dist
var assets embed.FS
func main() {
// Create an instance of the app structure
app := NewApp()
// Create application with options
err := wails.Run(&options