在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系统调用文档

广告
将在 10 秒后关闭
bannerAds