例子

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(" 消息"), win.MB_OK)
}

唯一的就是有一个win这个go module里有一个坑,在phd.go 中

func init() {
// Library
libpdhDll = syscall.MustLoadDLL("pdh.dll") // Functions
pdh_AddCounterW = libpdhDll.MustFindProc("PdhAddCounterW")
pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.
pdh_CloseQuery = libpdhDll.MustFindProc("PdhCloseQuery")
pdh_CollectQueryData = libpdhDll.MustFindProc("PdhCollectQueryData")
pdh_GetFormattedCounterValue = libpdhDll.MustFindProc("PdhGetFormattedCounterValue")
pdh_GetFormattedCounterArrayW = libpdhDll.MustFindProc("PdhGetFormattedCounterArrayW")
pdh_OpenQuery = libpdhDll.MustFindProc("PdhOpenQuery")
pdh_ValidatePathW = libpdhDll.MustFindProc("PdhValidatePathW")
}

PdhAddEnglishCounterW这个api只在vista以上版本支持,所以如果在xp下运行,在载入时会因找不到该函数的地址崩溃,临时解决方案,暴力注释掉

//pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.

更丰富的例子:https://github.com/lxn/walk

初步感觉用go写win gui,是个没意思的事情!

golang win32编程的一个dll坑的更多相关文章

  1. 怎样从一个DLL中导出一个C++类

    原文作者:Alex Blekhman    翻译:朱金灿 原文来源: http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx 译 ...

  2. go的变量redeclare的问题,golang的一个小坑

    go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int   然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会 ...

  3. Win32编程之静态库编写与使用.动态链接库的编写与使用

    Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库. 静态库其实就是解决模块开发的一种解决方案.在以前.我们写代码的时候.每个人都可以独立写一个项目.但是现在 ...

  4. win32编程简介

    win32编程简介 复习Win32整理下知识. 为什么学习win32? 我们要编写windos程序.都离不开API. 也就是我们所说的win32程序. 所以学好win32是你能不能再windows下编 ...

  5. golang并发编程

    golang并发编程 引子 golang提供了goroutine快速实现并发编程,在实际环境中,如果goroutine中的代码要消耗大量资源时(CPU.内存.带宽等),我们就需要对程序限速,以防止go ...

  6. Golang面向对象编程-struct(结构体)

    Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...

  7. 【WIN32编程】利用汇编写cs1.6辅助

    这篇文章本来在2018.5.1号就写完发圈子去了,这两天跟朋友在网吧打单击才想起来,就顺便把内容发上去把 作者:admin-神风 用CE找到功能的地址 CS1.6下载地址:https://pan.ba ...

  8. golang 面向对象编程

    概述 Golang语言的面向对象与c++,py等语言有所不同,是由于Golang不支持继承:与上述支持聚合和继承的面向对象的语言不同,Golang只支持聚合(也叫做组合)和嵌入.聚合和嵌入的区别: t ...

  9. 编译最新的SQLite 3.8.4.3为一个DLL

    SQLite是一个小型数据库.特别适合于client应用程序使用,它的众多优点就不多说了.有兴趣的去搜索. 话说使用吧. 我们要使用.就须要调用它.如今一步一步来. 第一步:上SQLite官网http ...

随机推荐

  1. 使用Python多线程犯的错误总结

    在使用Python多线程的时候,在使用多线程编程的时候,由于对于变量作用域和多线程不是很熟悉,导致在使用多线程的时候,犯了低级的错误. 第一个错误: 在多线程中使用全局变量,导致多个线程修改全局变量. ...

  2. iOS Code Sign error

    出现上述错误,检查是否是证书添加错误

  3. Google机器学习教程心得(一)

    Hello world Google Machine Learning Recipes 1 官方中文博客 http://chinagdg.org/2016/03/machine-learning-re ...

  4. Oracle EBS-SQL (PO-10):检查过期采购未接收订单.sql

    Select pha.segment1               采购订单,            MSI.SEGMENT1             物料编码,           MSI.DESC ...

  5. DelphiXE7如何调用Java Class,JAR等文件?

    源文地址:http://jingyan.baidu.com/article/e4d08ffdb61b040fd3f60d44.html 第一步,我们先在互联网上把java2pas这个工具下载下来. 下 ...

  6. 在JavaScript的数组中进行数组元素查找和替换(JS的indexOf等)

    <html> <head> <title> Extend JavaScript Array Method </title> <script lan ...

  7. @Transactional 注解说明

    先让我们看代码吧! 以下代码为在"Spring3事务管理--基于tx/aop命名空间的配置"基础上修改.首先修改applicationContext.xml如下: <pre ...

  8. javascript时间处理方法收集

    首先收集到的是一个给某一个时间对象增加一段时间的方法, 例如2026-05-11增加一个月的时间,增加后时间为2026-05-11, 代码如下: function DateAdd(interval,n ...

  9. How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  10. UCS2转UTF-8方法

    前两天工作时需要将UCS2编码转为UTF-8编码在网页显示.网上找了好久没有好方法,后来还是同事给了一个自己的函数,顺利解决问题.把函数贴在这里,愿帮助遇到同样问题的工友们~ /**      * U ...