通过目标程序名字获取进程PID

来源:互联网 发布:淘宝助理如何图片搬家 编辑:程序博客网 时间:2024/05/21 21:48

我们知道,要访问别的进程,需要获得它的进程PID,那么我们如何在程序中来实现这一功能呢?我们需要用到的是Windows中的进程快照功能:

BOOL  GET_PROCESSPID_BY_NAME (WCHAR*ProcessName,HANDLE*ProcessPID) {    BOOL FLAG                     = FALSE;    HANDLE ToolHelp32Handle       = INVALID_HANDLE_VALUE;    PROCESSENTRY32 ProcessEntry32 = {0};     //一个结构体,相当于照相机的胶卷,用于存放快照的影像                                   ProcessEntry32.dwSize = sizeof(PROCESSENTRY32);                   //这个结构体的大小是自己的大小    ToolHelp32Handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    do    {                      if(_memicmp(ProcessEntry32.szExeFile,ProcessImageName,      wcslen(ProcessImageName)*sizeof(WCHAR))==0)                      //比较影像和目标文件名 ,当完全相同时        {            *ProcessPID = (HANDLE)ProcessEntry32.th32ProcesspID;  //将进程ID赋值                                                          FLAG = TRUE;            break;        }    } while (Process32Next(ToolHelp32Handle, &ProcessEntry32));    if (ToolHelp32Handle!=INVALID_HANDLE_VALUE)    {        CloseHandle(ToolHelp32Handle);    }       return FLAG;}

如此,便可以查看其他进程的ID了。
当然,我们在实际编写程序的过程中,要严格注意异常的处理,尤其是在本程序中,ID的数据类型,各种可能出现的情况都需要注意。本篇文章只是为了简单介绍进程快照的功能,因此在这里不多加赘述,读者在编写代码时可以自行编写异常的处理机制。