23rd
Авг

Получить идентификатор процесса и узнать полуный путь до файла этого процесса. c/c++

Posted by Chas under Пост-обзор

Пишу небольшую программу, мне нужно чтобы она искала заданный мною выполняемый процесс. Подскажите какая это функция может сделать, быть может это win api функция?
Sazary:

код:

#include <windows.h>
#include <stdio.h>
#include <TlHelp32.h>
#include <conio.h>
#include <string.h>
#include <psapi.h>

using namespace std;

int main()
{
   HANDLE h,hp;
   PROCESSENTRY32 pe;
   int id;
   bool bl,flag=false;
   char name[256],str[256];
   char path[MAX_PATH];
   DWORD dw;
   HMODULE hmod;

   scanf(”%s”,name);

   h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPMODULE,0);

   for(bl = Process32First(h, &pe); bl; bl = Process32Next(h, &pe))
   {
      strcpy(str,pe.szExeFile);
      if(strcmp(str,name)==0)
      {
        printf(”Process found: %s\n”,str);
        hp = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,pe.th32ProcessID);
         EnumProcessModules(hp, &hmod,sizeof(hmod),&dw); // получаем первый модуль, связанный с процессом, то есть сам exe-файл
         GetModuleFileNameEx(hp, hmod, path, MAX_PATH); // получаем путь к модулю

         printf(”path: %s\n”,path);

         CloseHandle(hp);
         CloseHandle(h);
         flag = true;
         break;
      }
   }
   CloseHandle(h);
   if(!flag) printf(”Process not found”);

   getch();
   return 0;
}

Нужно прилинковать модуль psapi.

Тема на форуме

Похожие статьи