Russian Qt Forum

Qt => Общие вопросы => Тема начата: G-virus от Декабрь 29, 2009, 13:28



Название: QProcess отслеживание процесса. Помогите плиз!
Отправлено: G-virus от Декабрь 29, 2009, 13:28
Уважаемые IT-шники. У меня такая задача: нужно поставить в событие процедуру обнаружения необходимых процессов, и в случае их обнаружения, убивать. Например программа сканирует список процессов, и если обнаружила допустим firefox.exe то сразу его убивает. Как это сделать? Зараннее спасибо!  :)

P.S. И желательно чтобы прога не повисала в это время


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: lit-uriy от Декабрь 29, 2009, 13:52
Эта задача распадается минимум на две самостоятельные темы:
1) получение списка процессов
2) завершение процесса.

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


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: G-virus от Декабрь 29, 2009, 13:56
Раздели на две темы, дело быстрее пойдёт и пользы форумчанам будет больше.

ок


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: niXman от Декабрь 29, 2009, 14:18
какая ОС?


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: G-virus от Декабрь 29, 2009, 14:26
какая ОС?

винда ХР, я в другой теме уже написал  :)


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: niXman от Декабрь 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);
}
};
 
/***************************************************************************/
 


Название: Re: QProcess отслеживание процесса. Помогите плиз!
Отправлено: G-virus от Декабрь 29, 2009, 14:35
Спс) Щас буду пробовать  :)