zoukankan      html  css  js  c++  java
  • golang--获取进程ID(windows)

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"syscall"
    	"unsafe"
    )
    
    type ulong int32
    type ulong_ptr uintptr
    
    type PROCESSENTRY32 struct {
    	dwSize              ulong
    	cntUsage            ulong
    	th32ProcessID       ulong
    	th32DefaultHeapID   ulong_ptr
    	th32ModuleID        ulong
    	cntThreads          ulong
    	th32ParentProcessID ulong
    	pcPriClassBase      ulong
    	dwFlags             ulong
    	szExeFile           [260]byte
    }
    
    func main() {
    	kernel32 := syscall.NewLazyDLL("kernel32.dll")
    	CreateToolhelp32Snapshot := kernel32.NewProc("CreateToolhelp32Snapshot")
    	pHandle, _, _ := CreateToolhelp32Snapshot.Call(uintptr(0x2), uintptr(0x0))
    	if int(pHandle) == -1 {
    		return
    	}
    	Process32Next := kernel32.NewProc("Process32Next")
    	for {
    		var proc PROCESSENTRY32
    		proc.dwSize = ulong(unsafe.Sizeof(proc))
    		if rt, _, _ := Process32Next.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&proc))); int(rt) == 1 {
    			fmt.Println("ProcessName : " + string(proc.szExeFile[0:]))
    			fmt.Println("th32ModuleID : " + strconv.Itoa(int(proc.th32ModuleID)))
    			fmt.Println("ProcessID : " + strconv.Itoa(int(proc.th32ProcessID)))
    		} else {
    			break
    		}
    	}
    	CloseHandle := kernel32.NewProc("CloseHandle")
    	_, _, _ = CloseHandle.Call(pHandle)
    }
    

      

  • 相关阅读:
    区块链:术语
    比特币术语表
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
  • 原文地址:https://www.cnblogs.com/saryli/p/11119327.html
Copyright © 2011-2022 走看看