Add PROCESSENTRY32
diff --git a/kernel32.go b/kernel32.go
index e7af4ed..891ec15 100644
--- a/kernel32.go
+++ b/kernel32.go
@@ -36,6 +36,8 @@
procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot")
procModule32First = modkernel32.NewProc("Module32FirstW")
procModule32Next = modkernel32.NewProc("Module32NextW")
+ procProcess32First = modkernel32.NewProc("Process32FirstW")
+ procProcess32Next = modkernel32.NewProc("Process32NextW")
procGetSystemTimes = modkernel32.NewProc("GetSystemTimes")
procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo")
procSetConsoleTextAttribute = modkernel32.NewProc("SetConsoleTextAttribute")
@@ -247,7 +249,21 @@
return ret != 0
}
+func Process32First(snapshot HANDLE, pe *PROCESSENTRY32) bool {
+ ret, _, _ := procProcess32First.Call(
+ uintptr(snapshot),
+ uintptr(unsafe.Pointer(pe)))
+ return ret != 0
+}
+
+func Process32Next(snapshot HANDLE, pe *PROCESSENTRY32) bool {
+ ret, _, _ := procProcess32Next.Call(
+ uintptr(snapshot),
+ uintptr(unsafe.Pointer(pe)))
+
+ return ret != 0
+}
func GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime *FILETIME) bool {
ret, _, _ := procGetSystemTimes.Call(
uintptr(unsafe.Pointer(lpIdleTime)),
diff --git a/typedef.go b/typedef.go
index cf57e70..65f5111 100644
--- a/typedef.go
+++ b/typedef.go
@@ -655,6 +655,18 @@
DwCheckPoint uint32
DwWaitHint uint32
}
+type PROCESSENTRY32 struct {
+ DwSize uint32
+ CntUsage uint32
+ Th32ProcessID uint32
+ Th32DefaultHeapID uintptr
+ Th32ModuleID uint32
+ CntThreads uint32
+ Th32ParentProcessID uint32
+ PcPriClassBase int32
+ DwFlags uint32
+ SzExeFile [MAX_PATH]uint16
+}
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms684225.aspx
type MODULEENTRY32 struct {