go对windowsapi的调用
package main
import (
"syscall"
)
func abort(funcname string, err string) {
panic(funcname + " failed: "+err)
}
func print_version(v uint32) {
major := byte(v)
minor := uint8(v >> 8)
build := uint16(v >> 16)
print("windows version ", major, ".", minor, " (Build ", build, ")
")
}
func main() {
h, err := syscall.LoadLibrary("kernel32.dll")
if err!=nil {
abort("LoadLibrary", err.Error())
}
defer syscall.FreeLibrary(h)
proc, err := syscall.GetProcAddress(h, "GetVersion")
if err!=nil {
abort("GetProcAddress", err.Error())
}
r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0,0)
print_version(uint32(r))
}
//windows 7下调试通过
// 附 一个go站 http://golangwiki.org
//附 error 定义
type error interface {
Error() string
}
注:
函数原型
DWORD WINAPI GetVersion(void);
函数说明:
返回当前操作系统的版本号(在64位系统上是32位字节长度)。
返回值
如果函数执行成功,返回值的低字部分(低16位)是操作系统的主次版本号,高字部分(高16位)保存着操作系统平台的信息。
头文件:WinBase.h(包含在Windows.h头文件中)
库:Kernel32.lib
支持的最低版本的桌面客户端: Windows 2000 Professional [desktop apps only]