zoukankan      html  css  js  c++  java
  • 通过进程名称,获取其路径

    使用windows api

    #include <psapi.h>
    #include <tlhelp32.h>
     
    void get_process_file_path(DWORD process_id, char* path, int path_size)
    {
        HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, process_id);
        GetModuleFileNameExA(process, NULL, path, path_size);
        CloseHandle(process);
    }
     
     
    bool get_exe_path(LPCWSTR processName, char* path, int path_size)
    {
        PROCESSENTRY32 processInfo;
        processInfo.dwSize = sizeof(processInfo);
     
        HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        if (processesSnapshot == INVALID_HANDLE_VALUE)
        {
            printf("Invalid handle value
    ");
            return false;
        }
     
        Process32First(processesSnapshot, &processInfo);
        if (!wcscmp(processName, processInfo.szExeFile))
        {
            CloseHandle(processesSnapshot);
            printf("Found process
    ");
            return true;
        }
     
        while (Process32Next(processesSnapshot, &processInfo))
        {
            if (!wcscmp(processName, processInfo.szExeFile))
            {
                DWORD pid = processInfo.th32ProcessID;
                CloseHandle(processesSnapshot);
                get_process_file_path(pid, path, path_size);
                return true;
            }
        }
     
        CloseHandle(processesSnapshot);
        printf("Process NOT found.
    ");
        return false;
    }

    此处要轮询每个进程,稍微费时,不适合几秒钟就做一次的情况

  • 相关阅读:
    iOS学习05C语言函数
    iOS学习04C语言数组
    iOS学习03C语言循环结构
    iOS学习02C语言分支结构
    iOS学习01C语言数据类型
    Objective-C学习——中文URL编码和解码
    Objective-c 字面量
    SDWebImage
    mac的svn之cornerstone简易教程
    javascript 和oc交互
  • 原文地址:https://www.cnblogs.com/liujx2019/p/10309852.html
Copyright © 2011-2022 走看看