golang 带托盘的 http server启动关闭服务
来源:互联网 发布:ecshop分销源码下载 编辑:程序博客网 时间:2024/05/17 20:26
// 程序和托盘图标
rsrc -manifest main.manifest -o rsrc.syso -ico main.ico
// 优雅关闭http
rsrc -manifest main.manifest -o rsrc.syso -ico main.ico
// 优雅关闭http
github.com/braintree/manners
//展示
package mainimport ("fmt""log""net/http""github.com/braintree/manners""github.com/lxn/walk")func handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])}type MyWindow struct {*walk.MainWindowni *walk.NotifyIcon}func NewMyWindow() *MyWindow {mw := new(MyWindow)var err errormw.MainWindow, err = walk.NewMainWindow()checkError(err)return mw}func (mw *MyWindow) init() {http.HandleFunc("/", handler)}func (mw *MyWindow) RunHttpServer() error {return manners.ListenAndServe(":8080", http.DefaultServeMux)}func (mw *MyWindow) AddNotifyIcon() {var err errormw.ni, err = walk.NewNotifyIcon()checkError(err)mw.ni.SetVisible(true)icon, err := walk.NewIconFromResourceId(3)checkError(err)mw.SetIcon(icon)mw.ni.SetIcon(icon)startAction := mw.addAction(nil, "start")stopAction := mw.addAction(nil, "stop")stopAction.SetEnabled(false)startAction.Triggered().Attach(func() {go func() {err := mw.RunHttpServer()if err != nil {mw.msgbox("start", "start http server failed.", walk.MsgBoxIconError)return}}()startAction.SetChecked(true)startAction.SetEnabled(false)stopAction.SetEnabled(true)mw.msgbox("start", "start http server success.", walk.MsgBoxIconInformation)})stopAction.Triggered().Attach(func() {ok := manners.Close()if !ok {mw.msgbox("stop", "stop http server failed.", walk.MsgBoxIconError)} else {stopAction.SetEnabled(false)startAction.SetChecked(false)startAction.SetEnabled(true)mw.msgbox("stop", "stop http server success.", walk.MsgBoxIconInformation)}})helpMenu := mw.addMenu("help")mw.addAction(helpMenu, "help").Triggered().Attach(func() {walk.MsgBox(mw, "help", "http://127.0.0.1:8080", walk.MsgBoxIconInformation)})mw.addAction(helpMenu, "about").Triggered().Attach(func() {walk.MsgBox(mw, "about", "http server.", walk.MsgBoxIconInformation)})mw.addAction(nil, "exit").Triggered().Attach(func() {mw.ni.Dispose()mw.Dispose()walk.App().Exit(0)})}func (mw *MyWindow) addMenu(name string) *walk.Menu {helpMenu, err := walk.NewMenu()checkError(err)help, err := mw.ni.ContextMenu().Actions().AddMenu(helpMenu)checkError(err)help.SetText(name)return helpMenu}func (mw *MyWindow) addAction(menu *walk.Menu, name string) *walk.Action {action := walk.NewAction()action.SetText(name)if menu != nil {menu.Actions().Add(action)} else {mw.ni.ContextMenu().Actions().Add(action)}return action}func (mw *MyWindow) msgbox(title, message string, style walk.MsgBoxStyle) {mw.ni.ShowInfo(title, message)walk.MsgBox(mw, title, message, style)}func main() {mw := NewMyWindow()mw.init()mw.AddNotifyIcon()mw.Run()}func checkError(err error) {if err != nil {log.Fatal(err)}}
0 0
- golang 带托盘的 http server启动关闭服务
- 关闭或打开系统资源管理器的自带托盘图标
- 关闭常规server.msc启动服务
- Golang搭建HTTP服务
- SQL Server R2 报表服务,BIDS中预览带参数的报表,整个BIDS突然关闭
- 启动HTTP Server服务 运行oracle isqlplus
- 一个golang http包自带的绝佳示例
- 关闭vs2010的托盘提示
- cmd命令快速启动、暂停和关闭sql server服务
- HTTP server connection draining(http server优雅的关闭)
- 基于Golang的http、web服务框架(SSSS)
- Golang Http Server源码阅读
- Golang Http Server源码阅读
- Golang Http Server源码阅读
- golang http server源码解读
- Golang优雅退出http server
- Windows Server 2003默认关闭的服务
- Windows Server 2003默认关闭的服务
- Collections.sort对list的排序方法
- LinkedList的陷阱
- HalconCPP Final
- IronPython 设计参数赋值
- c语言打印二叉树树形结构(转载自:http://blog.csdn.net/xzongyuan)
- golang 带托盘的 http server启动关闭服务
- nginx的安装配置及与lvs集成
- 《安防解决方案》:从需求出发,重塑道路交通智慧监控
- java 操作 elasticsearch 杂记
- linux中的PCB---task_struct
- 精度计算
- placeholder插件
- 不同格式的YUV 和 RGB互转
- 修改wordpress的footer内容