Узнать из программы C/C++ запущен ли на компьютере процесс (программа)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 3, среднее: 5,00 из 5)
Загрузка...

C_C++ основы
Необходимо подключить заголовочный файл tlhelp32.h:

#include <tlhelp32.h>

И объявить данную функцию:

bool IsProcessRun(const char * const processName)
{
   HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
   PROCESSENTRY32 pe;
   pe.dwSize = sizeof(PROCESSENTRY32);
   Process32First(hSnapshot, &pe);
 
   while (1) {
      if (strcmp(pe.szExeFile, processName) == 0) return true;
      if (!Process32Next(hSnapshot, &pe)) return false;
   }
}

Пример использования:

if(IsProcessRun("info.exe"))
{
   //Запущен терминал QUIK
}

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Узнать из программы C/C++ запущен ли на компьютере процесс (программа): 2 комментария

  1. Дмитрий, спасибо.
    Хороший пример.
    У меня написано на C#, благодаря Вашей подсказке. У меня производится проверка нескольких QUIK.
    Немного изменил код. Может кому -то пригодится.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
            private Process ProcQUIK_Data1;
            private ProcessStartInfo proc = new ProcessStartInfo();
    .......
            bool Test__QUIK() {
                string   pach_info="путь к QUIK ";
                string   _pathDIR="каталог с QUIK"
                foreach (var item in Process.GetProcesses())
                {
                    if (item.ProcessName == "info")
                    {
                        string путь = item.MainModule.FileName;
                        if (pach_info == путь)   // запущен QUIK из нужного каталога 
                        {
                            IsЗапущен = true;
                            ProcQUIK_Data1 = item;
                        }
                    }
                }
     
                if (!IsЗапущен)
                {
                    proc.UseShellExecute = true;
                    proc.WorkingDirectory = _pathDIR;
                    proc.FileName = "info.exe";
                    proc.Verb = "runas";
                    ProcQUIK_Data1 = Process.Start(proc);
                }
                return true;
            }