프로그래밍

[win32] PID 값으로 프로세스 이름 얻기

Mesia 2015. 11. 11. 20:13

#include <windows.h>
#include <stdio.h>
#include <psapi.h>

#pragma comment(lib, "psapi.lib")

int GetProcssNameByPID(DWORD dwPID, char *buff, int size)
{
    int nBinNameLen = 0;
    HANDLE hProc = NULL;

    if ( (hProc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwPID)) != NULL)
    {
        nBinNameLen = GetModuleBaseName(hProc, NULL, buff, size);
        CloseHandle (hProc);
    }

    return nBinNameLen;
}

int main(int argc, char **argv)
{
    char szAppName[0xFF] = {0};
    DWORD dwPID = 0;
    int nAppNameLen = 0;

    dwPID = GetCurrentProcessId();
    nAppNameLen = GetProcssNameByPID(dwPID, szAppName, sizeof(szAppName)-1);
    szAppName[nAppNameLen] = 0;
   
    printf("%s (%ld)\n", szAppName, dwPID);
    return 0;
}