以下是使用 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 属性设置为结构体的大小,否则函数会返回失败。


        
        
        
        
        
        
        
        
        
                
                
                
                
                
                
                