您的位置 首页 > AI资讯 > 产业资讯

golang利用wails开发类似360度的悬浮球(二)

修改源码

如图,经过慢慢查找,最终在这个位置设置了窗口的窗口属性。也就是我们在app.go中设置的表单属性会被设置为这里的表单。第71行我添加了一行代码(我的想法可以暂时编辑源码)

exStyle=w32.WS_EX_NOREDIRECTIONBITMAP|w32.WS_EX_TOOLWINDOW|w32.WS_EX_TOPMOST 上面代码的功能是创建一个顶部有工具栏的混合渲染窗口。 WS_EX_TOOLWINDOW 属性是关键。窗口的图标不显示在任务栏上。直接百度WS_EX_TOOLWINDOW就是关键。可以出现带有详细描述的文字。另外,这里还可以扩展Windows Forms的各种功能。

给个边框加点样式

比较好看的样式是百度的各种特效,比如旋转,灯光等等。Wailes的UI完全是一个可以自由使用的网页。现在我们已经实现了大部分,隐藏任务栏图标,现在我们需要向系统托盘添加一个图标。

golang利用wails开发类似360度的悬浮球(二)

系统托盘图标实现

首先找一张png图片,我们要用到浮球的图片

是的,你会发现这张图就是wails的图标图。现在需要更改桌面上图片的名称,并将其替换为这张图片。

然后删除windows下的build----》icon.ico

然后启动wails,运行wails dev,然后build----》windows下的icon.ico就会重新生成,就是我们替换的图片了。 ico格式是图标图片,系统托盘图标必须使用这种格式。下一步是将图标放入系统托盘中。这里我们使用github.com/getlantern/systray包来完成。详细教程可以在百度上找到。

golang利用wails开发类似360度的悬浮球(二)

完整的appgo代码

包mainimport ('嵌入''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/distvar assets embed.FSfunc main() {//创建应用程序结构的实例app :=NewApp()//创建应用程序optionserr :=wails.Run(options.App{Title: 'test',Width: 130,Height: 130,AssetServer: assetserver.Options{Assets: 资产,},BackgroundColour: options.RGBA{R: 0, G: 0, B3336 0 0, A: 0} , OnStartup: app.startup,OnDomReady: app.OnDomReady,Bind: []interface{}{app,},AlwaysOnTop: true, //顶层Frameless: true, //无边框Windows: windows.Options{WebviewIsTransparent: true, //网页透明WindowIsTranslucent: true, //窗口透明DisableFramelessWindowDecorations: true,},})if err !=nil {println('Error:', err.Error())}}完成app.go

package mainimport ('context''fmt''github.com/getlantern/systray''github.com/wailsapp/wails/v2/pkg/runtime''io/ioutil')//App structtype App struct {ctx context.Context }//NewApp 创建一个新的App应用structfunc NewApp() *App {return App{}}//app启动时调用startup。上下文已保存//因此我们可以调用运行时方法func (a *App)startup (ctx context.Context) {a.ctx=ctxgo systray.Run(onReady, onExit)}//Greet 返回给定名称的问候语func (a *App) Greet(name string) string {return fmt.Sprintf('你好%s,演出时间到了!', name)}var mShow, mHide, mQuit *systray.MenuItemfunc onReady() {b, err :=ioutil.ReadFile('D://icon.ico') //这里我生成的图标放在D盘if err !=nil {fmt.Print(err)}systray.SetIcon(b)systray.SetTooltip('右下角服务已最小化,右键打开菜单!')mShow=systray.AddMenuItem('显示','显示窗口')mHide=systray.AddMenuItem('隐藏','隐藏窗口') )systray.AddSeparator()mQuit=systray.AddMenuItem('退出', '退出程序')fmt.Println('End~~~~1~~')}func onExit() {//清理这里fmt.Println( '77777-5555-5555')}func (a *App) OnDomReady(ctx context.Context) {fmt.Println (334)var c=ctxfmt.Println(456)go func() {for {fmt.Println(' --1----1----')select {case -mShow.ClickedCh:fmt.Println('显示')runtime.Show(c)runtime.WindowUnminimise(c)runtime.WindowSetAlwaysOnTop(c, true)case - mHide.ClickedCh:fmt.Println('隐藏')runtime.Hide(c)case -mQuit.ClickedCh:fmt.Println('退出')runtime.Quit(c)}}}()}后记

用户评论

凉凉凉”凉但是人心

这个标题好想说的是讲如何实现微信朋友圈那样的界面吧?

    有18位网友表示赞同!

泡泡龙

Wails真是牛!可以跨平台应用,开发360悬浮球应该很方便!

    有17位网友表示赞同!

幸好是你

学习Go和Wails,做一套自己的桌面工具很有想法!

    有11位网友表示赞同!

ˉ夨落旳尐孩。

看标题,感觉要分享一些实际的代码实现细节了?

    有9位网友表示赞同!

看我发功喷飞你

之前一直没尝试过Wails开发桌面应用,这次一定要看看。

    有11位网友表示赞同!

晨与橙与城

360悬浮球的功能也太牛了吧?希望能看到文章里的一些实现方法。

    有8位网友表示赞同!

煮酒

我最近也打算学习Golang,刚好用到这套框架!

    有20位网友表示赞同!

南初

盼望作者能分享详细的开发教程,很期待!

    有12位网友表示赞同!

迷路的男人

桌面应用和 web 应用差别很大啊,需要掌握不同的技术的.

    有20位网友表示赞同!

涐们的幸福像流星丶

想看看到这种悬浮球的实际效果画面!

    有19位网友表示赞同!

黑夜漫长

Go语言的并发处理能力真是太强了,应用在桌面程序开发上更牛逼!

    有14位网友表示赞同!

封锁感觉

Wails 和 Electron 都是不错的跨平台框架工具。

    有10位网友表示赞同!

限量版女汉子

用Golang 开发桌面应用,感觉性能会有优势吧?

    有17位网友表示赞同!

花开丶若相惜

文章要分享哪些 Wails 的 API 来实现悬浮球功能呢?

    有9位网友表示赞同!

丢了爱情i

360悬浮球真好用,希望能学习下它的设计和开发思路。

    有18位网友表示赞同!

一别经年

看看这个框架能不能替代 Electron ,效率高不高的?

    有8位网友表示赞同!

怅惘

桌面应用越来越流行了,这门技术很有潜力!

    有7位网友表示赞同!

秒淘你心窝

Go语言已经非常成熟了,各种框架也支持越来越完善!

    有5位网友表示赞同!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023