golang win32编程的一个dll坑

摘要:
示例packagemainimport(“github.com/lxn/win”“strconv”“syscall”)func_TEXT(_strstring)*uint16{returnsyscall.StringToUTF16Ptr(_str)}func_toString(_nint32)string{retornstrconv.Itoa(int(_n))}

例子

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坑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端导出功能实现的两种方式WPF简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Win32编程day01 学习笔记

Win32 Windows编程  1 Windows编程基础 2 Windows文字的编码 3 窗口程序 4 窗口消息 5 菜单和加速键 6 绘图 7 对话框 8 基本控件  ..... 一 Windows编程基础  1 Win32应用程序的基本类型    1.1 控制台程序      不需要完善的Windows窗口,可以使用DOS窗口      的方式显...

C#调用WIN32的API(转贴)

小序 Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制Windows的接口。想玩儿吗?呵呵,太难了。C#使用非常简单,写程序就像打拱猪,Sorry -_-! ,搭积木一样简单。想玩儿吗?呵呵,没办法直接控制Windows的核心...

RF环境搭建

前言:自动化运用 数据驱动开发:用户,上下文,场景,数据,验证 自动化用例组织:领域,史诗故事,拓扑和测试用例 用例规划: 三个步骤:确定业务领域,规划用例环境拓扑,规划测试套和测试用例 Robot提供了一个图形化,可编辑的环境。其基础还是python的SSH等库,robot起到一个综合处理的过程。 如果没有robot,那么python写测试用例也可以这样...

使用Python控制IE访问网站

这里介绍一下怎样利用Python 2.7和Python Win32 Extensions来控制浏览器访问一个网页。 首先需要到Python的官网下载Python 2.7.3 Windows Installer,下载后文件名为python-2.7.3.msi。 接着到Python Win32 Extensions的官网(http://starship.pyt...

转-VS2010常用功能使用介绍

原文链接:http://www.jizhuomi.com/software/27.html 1.几个基础概念 在讲VS2010之前先讲下程序开发过程中的几个基本概念:源程序、目标程序和翻译程序。 源程序就是我们用各种语言写的程序,我们常说写代码其实就是在写源程序。源程序可以是汇编语言或者高级语言等其他语言所写。 目标程序是经过翻译之后生成的程序,可以是机器...

创建cocos2dx lua 工程

-- 引擎版本 coco2dx 3.1.1 引擎的创建过程实际上从 hellolua 复制了一份出来,然后更改包名,路径名。 需要注意的是,通过命令行build的时候每次都会复制一堆脚本出来,这其中包含错误文件。需要将源头改正确 -- 重新创建工程过程记录 1.创建工程 cocos new chuanqi -p com.game.chuanqi -l l...