Вопрос: Как получить список запущенных задач?
Ответ :
Получить список запущенных задач: имена их файлов и PID, можно так:
code:
--------------------------------------------------------------------------------
//#define SpyWinNT //Для WinNT
#ifdef SpyWinNT
#include <psapi.h>
#else //Win98, Win2000,...
#include <tlhelp32.h>
#endif
#ifdef SpyWinNT
typedef struct tagPROCNAMEID
{
DWORD ProcessID;
char szProcessName[MAX_PATH];
}PROCNAMEID;
#endif
TList *TaskList=NULL;
void GetWinTask()
{
#ifdef SpyWinNT
PROCNAMEID pn;
PROCNAMEID *lpn;
#else
HANDLE hSnapshot;
PROCESSENTRY32 pe;
PROCESSENTRY32 *lpe;
#endif
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
BOOL result;
int n=0;
if(TaskList==NULL)TaskList=new TList;
for(i=0; i < (DWORD)TaskList->Count; i++)
{
#ifdef SpyWinNT
if(TaskList->Items[i])delete (PROCNAMEID *)TaskList->Items[i];
#else
if(TaskList->Items[i])delete (PROCESSENTRY32 *)TaskList->Items[i];
#endif
}
TaskList->Clear();
#ifdef SpyWinNT
n=0;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ )
{
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i] );
// Get the process name.
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
lpn =new PROCNAMEID;
lpn->ProcessID=aProcesses[i];
GetModuleBaseName( hProcess, hMod,lpn->szProcessName,
sizeof(lpn->szProcessName) );
TaskList->Add(lpn);
n++;
}
}
CloseHandle( hProcess );
}
#else //Win2000
i=0;
hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnapshot !=INVALID_HANDLE_VALUE)
{
pe.dwSize=sizeof(PROCESSENTRY32);
result=Process32First(hSnapshot, &pe);
while(result)
{
lpe =new PROCESSENTRY32;
memcpy(lpe,&pe,sizeof(PROCESSENTRY32));
TaskList->Add(lpe);
i++;
result=Process32Next(hSnapshot, &pe);
}
}
#endif
}
--------------------------------------------------------------------------------
|