zoukankan      html  css  js  c++  java
  • 遍历进程,获取当前进程下进程的路径.(获得全路径)

    #include <stdio.h>
    #include <windows.h>
    #include <tlhelp32.h>
    #include <string>
    #include <tchar.h>
    #include <Psapi.h>
    #pragma comment (lib,"Psapi.lib")
     
    BOOL DosPathToNtPath(LPTSTR pszDosPath, LPTSTR pszNtPath)
    {
        TCHAR            szDriveStr[500];
        TCHAR            szDrive[3];
        TCHAR            szDevName[100];
        INT                cchDevName;
        INT                i;
         
        //检查参数
        if(!pszDosPath || !pszNtPath )
            return FALSE;
     
        //获取本地磁盘字符串
        if(GetLogicalDriveStrings(sizeof(szDriveStr), szDriveStr))
        {
            for(i = 0; szDriveStr[i]; i += 4)
            {
                if(!lstrcmpi(&(szDriveStr[i]), _T("A:\")) || !lstrcmpi(&(szDriveStr[i]), _T("B:\")))
                    continue;
     
                szDrive[0] = szDriveStr[i];
                szDrive[1] = szDriveStr[i + 1];
                szDrive[2] = '';
                if(!QueryDosDevice(szDrive, szDevName, 100))//查询 Dos 设备名
                    return FALSE;
     
                cchDevName = lstrlen(szDevName);
                if(_tcsnicmp(pszDosPath, szDevName, cchDevName) == 0)//命中
                {
                    lstrcpy(pszNtPath, szDrive);//复制驱动器
                    lstrcat(pszNtPath, pszDosPath + cchDevName);//复制路径
     
                    return TRUE;
                }           
            }
        }
     
        lstrcpy(pszNtPath, pszDosPath);
         
        return FALSE;
    }
    //获取进程完整路径
    BOOL GetProcessFullPath(DWORD dwPID, TCHAR pszFullPath[MAX_PATH])
    {
        TCHAR        szImagePath[MAX_PATH];
        HANDLE        hProcess;
        if(!pszFullPath)
            return FALSE;
     
        pszFullPath[0] = '';
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, dwPID);
        if(!hProcess)
            return FALSE;
     
        if(!GetProcessImageFileName(hProcess, szImagePath, MAX_PATH))
        {
            CloseHandle(hProcess);
            return FALSE;
        }
     
        if(!DosPathToNtPath(szImagePath, pszFullPath))
        {
            CloseHandle(hProcess);
            return FALSE;
        }
     
        CloseHandle(hProcess);
     
        _tprintf(_T("%d,%s 
    "),dwPID,pszFullPath);
        return TRUE;
    }
    int main(int argc, char* argv[])
    {
        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (INVALID_HANDLE_VALUE == hSnapshot)
        {
            return NULL;
        }
        PROCESSENTRY32 pe ={0};
        pe.dwSize = sizeof(PROCESSENTRY32); 
     
        BOOL fOk;
        for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe))
        {
            TCHAR szProcessName[MAX_PATH] = {0};
            GetProcessFullPath(pe.th32ProcessID, szProcessName);
        }
        return 0;
    }
    
    
  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/iBinary/p/10749239.html
Copyright © 2011-2022 走看看