利用Psapi获取进程名

最新版本的Psapi已经有了GetProcessImageFileName()和QueryFullProcessImageName(),

老版本PSapi没有这个接口,可以用以下代码完成相同的功能。

BOOL GetProcessName(CString &strProcessName)
{
    HANDLE hProcess = GetCurrentProcess();
    HMODULE aryModule[1024];
    DWORD ncbSize;
    BOOL bSuccess = EnumProcessModules(hProcess, aryModule, 1024*sizeof(HMODULE), &ncbSize);
    if(!bSuccess)
        return FALSE;
    TCHAR szModuleName[1024];
    DWORD dwLen = GetModuleFileName(aryModule[0], szModuleName, 1024);
    if(0 != dwLen)
    {
        CString strImagePath = szModuleName;
        int nRight = strImagePath.GetLength()-strImagePath.ReverseFind('\\')-1;
        strProcessName = strImagePath.Right(nRight);
        return TRUE;
    }
    return FALSE;
}

posted on 2012-03-11 11:58  莫贰  阅读(222)  评论(0编辑  收藏  举报

导航