在Go中执行Windows API的备忘录
以下是关于在golang中执行Windows API的备忘录(入口)。
尝试过的事情
首先,为了了解感觉,我尝试在Windows的Kernel32.dll中执行GetTickCount函数来获取操作系统的启动时间(以毫秒为单位)并编写了一个程序。
翻译为中文:
调味汁
package main
import (
"fmt"
"syscall"
)
func main() {
// golang.org/x/sys/windows(参考)
// https://godoc.org/golang.org/x/sys/windows
// Win32 API 一覧(参考)
// http://www.pinvoke.net/index.aspx
// kernel32.dllをロード
kernel32, err := syscall.LoadDLL("Kernel32.dll")
if err != nil {
panic(err)
}
// 一番最後に読み込んだDLLをメモリからアンロード
// https://godoc.org/golang.org/x/sys/windows#DLL.Release
defer kernel32.Release()
// システムが起動してから経過した時間をミリ秒(ms)で取得する関数を指定
// http://www.pinvoke.net/default.aspx/kernel32.GetTickCount
proc, err := kernel32.FindProc("GetTickCount")
if err != nil {
panic(err)
}
// 起動時間を取得
r, _, _ := proc.Call()
// 起動時間を表示(ms)
fmt.Println(r)
}
加载DLL文件,找到其定义的函数并执行。
执行(shí )
PS C:\Users\Administrator\Desktop> go run .\get_os_uptime.go
6439736
请在以下内容中提取部分信息,
只需要一个选项:
参考
Windows DLL的参考列表
Go语言的Windows系统调用文档