golang1.8使用cgo获取进程是否假死
2017-05-12 17:44
369 查看
package main import ( "flag" ) /* #include <stdio.h> #include <windows.h> #include <Winuser.h> typedef struct EnumFunArg { HWND hWND; DWORD dwProcessId; }EnumFunArg,*LPEnumFunArg; BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam) { EnumFunArg *pArg = (LPEnumFunArg)lParam; DWORD processId; GetWindowThreadProcessId(hwnd, &processId); if( processId == pArg->dwProcessId) { pArg->hWND = hwnd; return FALSE; } return TRUE; } int ReturnWnd(DWORD processID) { BOOL re = FALSE; EnumFunArg wi; wi.dwProcessId = processID; wi.hWND = NULL; EnumWindows(lpEnumFunc,(LPARAM)&wi); if(wi.hWND) { if (IsHungAppWindow(wi.hWND)) { return 1; } } else { return -1; } return 0; } */ import "C" func main() { pid := flag.Int("p", 0, "-p 1001") flag.Parse() h := C.ReturnWnd(C.DWORD(*pid)) switch h { case 0: println("程序有响应") case 1: println("程序无响应") case -1: println("无法获取窗口") } }
相关文章推荐
- 关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例。
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- [C++]使用FS寄存器判断进程是否被调试
- Linux下父进程通过管道发送文件名给子进程,子进程获取文件名后首先判断文件是否存在,不存在,通过管道返回错误信息,存在,将文件内容返回给父进程
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- 使用API获取一个应用是否运行结束的例子
- 获取windows进程列表,并以字符串形式查询是否存在某一进程
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- 获取windows进程列表,并以字符串形式查询是否存在某一进程
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- 如何使用WMI获取进程信息
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- 如何使用WMI获取进程信息 (转载)
- 获取linux进程内存使用信息
- 获取提升类型和判断进程是否以管理员身份运行
- [zt]关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例
- linux内核模块遍历获取进程列表,使用list_entry()
- 获取进程的CPU使用情况
- 获取当前进程的CPU使用率和内存使用
- 使用ps命令获取Linux环境下全部RAC集群进程信息