ZBLOG

golang 获取本地windows11进程信息

以下是使用 Golang 获取本地 Windows 11 进程信息的示例代码:

package main

import (
    "fmt"
    "syscall"
    "unsafe"
)

type PROCESSENTRY32 struct {
    dwSize              uint32
    cntUsage            uint32
    th32ProcessID       uint32
    th32DefaultHeapID   uintptr
    th32ModuleID        uint32
    cntThreads          uint32
    th32ParentProcessID uint32
    pcPriClassBase      int32
    dwFlags             uint32
    szExeFile           [syscall.MAX_PATH]uint16
}

func main() {
    snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0)
    if err != nil {
        fmt.Println("CreateToolhelp32Snapshot failed:", err)
        return
    }
    
    defer syscall.CloseHandle(snapshot)
    
    var processEntry PROCESSENTRY32
    
     // 必须先设置 dwSize 属性为结构体的大小,否则函数会返回失败。
     processEntry.dwSize = uint32(unsafe.Sizeof(processEntry))
     
     // 遍历进程列表并输出每个进程的名称和 ID。
     for syscall.Process32Next(snapshot, &processEntry) == nil {
         exeName := syscall.UTF16ToString(processEntry.szExeFile[:])
         fmt.Printf("Process Name: %s, PID: %d\n", exeName, processEntry.th32ProcessID)
     }
}

该代码使用了 CreateToolhelp32Snapshot 函数来获取当前系统中所有进程的快照。然后,它遍历进程列表并输出每个进程的名称和 ID。

注意,在调用 Process32Next 函数之前,必须先将 dwSize 属性设置为结构体的大小,否则函数会返回失败。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4749

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?