Russian Qt Forum
Ноябрь 01, 2024, 10:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess отслеживание процесса. Помогите плиз!  (Прочитано 3935 раз)
G-virus
Гость
« : Декабрь 29, 2009, 13:28 »

Уважаемые IT-шники. У меня такая задача: нужно поставить в событие процедуру обнаружения необходимых процессов, и в случае их обнаружения, убивать. Например программа сканирует список процессов, и если обнаружила допустим firefox.exe то сразу его убивает. Как это сделать? Зараннее спасибо!  Улыбающийся

P.S. И желательно чтобы прога не повисала в это время
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабрь 29, 2009, 13:52 »

Эта задача распадается минимум на две самостоятельные темы:
1) получение списка процессов
2) завершение процесса.

Раздели на две темы, дело быстрее пойдёт и пользы форумчанам будет больше.
Записан

Юра.
G-virus
Гость
« Ответ #2 : Декабрь 29, 2009, 13:56 »

Раздели на две темы, дело быстрее пойдёт и пользы форумчанам будет больше.

ок
Записан
niXman
Гость
« Ответ #3 : Декабрь 29, 2009, 14:18 »

какая ОС?
Записан
G-virus
Гость
« Ответ #4 : Декабрь 29, 2009, 14:26 »

какая ОС?

винда ХР, я в другой теме уже написал  Улыбающийся
Записан
niXman
Гость
« Ответ #5 : Декабрь 29, 2009, 14:32 »

Список процессов.
Только типы поправь.
Код
C++ (Qt)
/***************************************************************************/
 
class LProcessInfo {
public:
LProcessInfo() {
     memset( &pi, 0, sizeof(PROCESSENTRY32) );
  }
LProcessInfo( PROCESSENTRY32 p ) {
     memset( &pi, 0, sizeof(PROCESSENTRY32) );
     init(p);
  }
 ~LProcessInfo() { }
/**/
void init( PROCESSENTRY32 p ) { memcpy( &pi, &p, sizeof(PROCESSENTRY32) ); }
  /**/
  luint32 id()          const { return pi.th32ProcessID;       }
  luint32 size()        const { return pi.dwSize;              }
  luint32 usage()       const { return pi.cntUsage;            }
  luint32 module_id()   const { return pi.th32ModuleID;        }
  luint32 threads()     const { return pi.cntThreads;          }
  luint32 parent_id()   const { return pi.th32ParentProcessID; }
  lint32  parent_pri()  const { return pi.pcPriClassBase;      }
  luint32 flags()       const { return pi.dwFlags;             }
  const lchar*name()    const { return &pi.szExeFile[0];       }
  /**/
  bool operator< ( const LProcessInfo& pi ) {
     return l_strcmpi( name(), pi.name() ) < 0;
  }
private:
  PROCESSENTRY32 pi;
};
 
/***************************************************************************/
 
class LProcessInfoList: public LVector<LProcessInfo> {
public:
  LProcessInfoList() { refresh(); }
 ~LProcessInfoList() {}
  /**/
  void refresh() {
HANDLE pl;
PROCESSENTRY32 pe;
/**/
pl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
pe.th32ParentProcessID = 0;
/**/
if ( Process32First(pl, &pe) ) {
do {
push_back( LProcessInfo(pe) );
pe.th32ParentProcessID = 0;
} while ( Process32Next(pl, &pe) );
}
CloseHandle(pl);
}
};
 
/***************************************************************************/
 
Записан
G-virus
Гость
« Ответ #6 : Декабрь 29, 2009, 14:35 »

Спс) Щас буду пробовать  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.395 секунд. Запросов: 22.