词条 | Process32First |
释义 | process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄.其原型为(用的是vfp) DECLARE INTEGER Process32First IN WIN32API ; INTEGER hSnapshot,STRING @ lppe 在C语言中如下 BOOL WINAPI Process32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ); 此函数往往和 Process32Next( Handle hsnapShot, LPPROCESSENTRY32 lppe) 搭配使用,用来枚举当前系统快照相关的所有进程。 这些只是一点点,如有更好的解说,请告诉我,谢谢! vb实例 Private Type PROCESSENTRY32 dwSize As Long cntUseage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long swFlags As Long szExeFile As String * 1024 End Type Private Sub demo() Dim MySnapHandle As Long Dim ProcessInfo As PROCESSENTRY32 MySnapHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) ProcessInfo.dwSize = Len(ProcessInfo) If Process32First(MySnapHandle, ProcessInfo) <> 0 Then '用来判断快照MySnapHandle 成功获得进程信息 end if end sub =============================================================================== C/C++ Code: PROCESSENTRY32 *info; // 在使用这个结构之前,先设置它的大小 info->dwSize = sizeof(PROCESSENTRY32 ); char proName[] = {"devenv.exe"}; HANDLE handlePro = NULL; //结束进程句柄 // 给系统内的所有进程拍一个快照 HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcessSnap == INVALID_HANDLE_VALUE) { printf(" CreateToolhelp32Snapshot调用失败! \"); return -1; } // 遍历进程快照,轮流显示每个进程的信息 BOOL bMore = ::Process32First(hProcessSnap, info); BOOL terminate = FALSE; while( bMore != FALSE) { if(strcmp(proName,info->szExeFile) == 0) { handlePro=OpenProcess(PROCESS_TERMINATE, FALSE, info->th32ProcessID); if (NULL == handlePro) { break; } //结束进程 terminate = TerminateProcess(handlePro, 0); } bMore = Process32Next(hProcessSnap, info); } ::CloseHandle(hProcessSnap); =============================================================================== |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。