分享
  1. 首页
  2. 文章

golang 开发windows应用

Keluzi · · 13620 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

闲着无聊又玩go语言找虐。。。——用go开发windows应用程序

想要用go开发windows应用必须先要安装必要的组件:

walk集成了很多windows的控件

go get github.com/lxn/walk

win是go调用windowsApi的一种实现

go get github.com/lxn/win

rsrc是连接walk/win和windows动态连接的工具

go get github.com/akavel/rsrc

有了这些我们就能实际的编码了

先测试一下winApi的有效性:

看了一下这位写的,比较到位,把之前编译运行报错的问题也找到了,恩感谢,但是源码里有段字符串拼错了

更正一下:

// GoWin project GoWin.go
package main
import (
  "github.com/lxn/win"
  "strconv"
  "syscall"
)
func _TEXT(_str string) *uint16 {
  return syscall.StringToUTF16Ptr(_str)
}
func _toString(_n int32) string {
  return strconv.Itoa(int(_n))
}
func main() {
  var hwnd win.HWND
  cxScreen := win.GetSystemMetrics(win.SM_CXSCREEN)
  cyScreen := win.GetSystemMetrics(win.SM_CYSCREEN)
  win.MessageBox(hwnd, _TEXT("屏幕长-:"+_toString(cxScreen)+"宽:"+_toString(cyScreen)), _TEXT("消息<a target=\"_blank\" href=\"http://blog.csdn.net/songbohr\">http://blog.csdn.net/songbohr</a>"), win.MB_OK)
}

注意:win组件里的phd.go中,

//这行要注释,如果你不是WIN7的狂热爱好者的话
//pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW")


http://blog.csdn.net/songbohr/article/details/10511041

编译运行成功,注意这里必须是package main不然不会生产exe

package main

接下来试一下walk能不能行:

package main
import (
  "github.com/lxn/walk"
  . "github.com/lxn/walk/declarative"
  "strings"
)
func main() {
  var inTE, outTE *walk.TextEdit
  MainWindow{
    Title:  "SCREAMO",
    MinSize: Size{600, 400},
    Layout: VBox{},
    Children: []Widget{
      HSplitter{
        Children: []Widget{
          TextEdit{AssignTo: &inTE},
          TextEdit{AssignTo: &outTE, ReadOnly: true},
        },
      },
      PushButton{
        Text: "SCREAM",
        OnClicked: func() {
          outTE.SetText(strings.ToUpper(inTE.Text()))
        },
      },
    },
  }.Run()
}

编译运行成功,但是运行没结果,

搞了半天,仔细看了一下walk的文档

原来是要这样搞:

首先新建一个文件比如test.manifest(感觉做着绝对是个android粉)填入如下代码

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
    <dependency>
      <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
      </dependentAssembly>
    </dependency>
  </assembly>

运行如下命令

rsrc -manifest 你应用的名字.manifest -o rsrc.syso
go build
go build -ldflags="-H windowsgui"

运行生成的exe,就能看到熟悉的windows界面了

感觉go开发windows应用还是不怎么方便,而且不太经济,调试和编译耗费的精力很大,

期待以后开发工具能再进一步优化一下



有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:Keluzi

查看原文:golang 开发windows应用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
13620 次点击 ∙ 3 赞
上一篇:go 函数使用
下一篇:go 语言
1 回复 | 直到 2000年01月01日 00:00:00
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏