Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.01.2018, 08:03   #1
winlife
Новичок
 
Регистрация: 12.01.2018
Сообщений: 1
Репутация: 10
По умолчанию Проверка нескольких процессов

Приветствую.
Подскажите пожалуйста по коду
Код:

//#include <cstdio>
#include <windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <time.h>

class procHandle {
    ProcId id;
    HANDLE handle;
public:
    procHandle(std::wstring const &name, DWORD access = PROCESS_ALL_ACCESS)
        : id(name), 
        handle(OpenProcess(access, FALSE, id)   )
    {
        // according to MSDN, returns NULL in case of error
        assure(handle != NULL, "Error retrieving process handle");
    }

    ~procHandle() { CloseHandle(handle); }

    operator HANDLE() { return handle; }
};

using namespace std;

void sleepcp(int milliseconds);

void sleepcp(int milliseconds) // Cross-platform sleep function
{
    clock_t time_end;
    time_end = clock() + milliseconds * CLOCKS_PER_SEC/1000;
    while (clock() < time_end)
    {
    }
}

HANDLE GetProcessHandle(const char *process_name, DWORD dwAccess)
{
  HANDLE hProcessSnap;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;


  hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

  if(hProcessSnap==INVALID_HANDLE_VALUE)
    {
      std::cout <<"Failed to create process snapshot!";
      return INVALID_HANDLE_VALUE;
    }

  pe32.dwSize=sizeof(PROCESSENTRY32);

  if(!Process32First(hProcessSnap,&pe32))
    {
      std::cout <<"Process32First() failed\n";
      return INVALID_HANDLE_VALUE;
    }

  do
    {
      if(strcmp(pe32.szExeFile,process_name)==0)
        return OpenProcess(dwAccess,0,pe32.th32ProcessID);

    }
  while(Process32Next(hProcessSnap,&pe32));

}

int main()

{
	while(true) {
		sleepcp(3000);
    //HANDLE hProcess=GetProcessHandle("process1.exe",PROCESS_QUERY_INFORMATION);
    if(hProcess==0 || hProcess==INVALID_HANDLE_VALUE)
    {
        std::cout <<"process1 is not running";
        //return 0;
    }
    else
    {
        std::cout <<"process1 is running";
        //return 0;
    }
}
}

в данном случае проверяется 1 процесс, мне же необходимо проверить список такого вида:
process1.exe, process2.exe, process3title, process4title где process3title и process4title это win титлы определенных приложений/
зарание спасибо
winlife вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нескольких процессов через цикл Си WolfEater Помощь студентам 1 29.09.2015 18:29
Pascal Синхронизация и взаимодействие нескольких процессов Usya100 Фриланс 4 19.12.2013 12:01
Использование нескольких процессов (За деньги) [FENIX] Фриланс 1 23.04.2012 14:11
Проверка нажатия нескольких RadioButton (избавиться от множества проверок) Olya1985 Общие вопросы Delphi 2 21.08.2011 18:13
Проверка на наличие нескольких максимальныхэлементов xxSINxx Помощь студентам 3 11.03.2009 21:40


10:21.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru