Получение идентификаторов процесса

Моя программа ниже объединит имена процессов в names строка. Как я могу изменить это, чтобы включить идентификаторы процесса вместо имен? Какой тип должен names быть, как его инициализировать и как соединить каждый proc32.th32ProcessID в этом ?

PROCESSENTRY32 proc32;
TCHAR names[MAX_PATH]=L"";

if(hSnap == INVALID_HANDLE_VALUE)
{
cout<<"invalid handle value error!\n";
return;
}proc32.dwSize = sizeof(PROCESSENTRY32);if(!Process32First(hSnap, &proc32))
{
cout<<"Tread32First() error!\n";
CloseHandle(hSnap);
return ;
}

do
{

//cout<<"Current process id: "<<GetCurrentProcessId()<<"\n";
wcout<<L"Process Name: "<<proc32.szExeFile<<"\n";
cout<<"Process ID: "  <<proc32.th32ProcessID<<"\n";
cout<<"Thread Count: "<<proc32.cntThreads<<"\n"<<endl;

lstrcat(names, proc32.szExeFile);
lstrcat(names, L"\n");}while(Process32Next(hSnap, &proc32));

0

Решение

Так как вы все равно используете C ++, вы должны использовать его. использование std::vector, std::wstring, так далее:

PROCESSENTRY32W proc32;
vector<wstring> names;
vector<DWORD> ids;

if (hSnap == INVALID_HANDLE_VALUE)
{
cout << "invalid handle value error!" << endl;
return;
}

proc32.dwSize = sizeof(PROCESSENTRY32W);

if (!Process32FirstW(hSnap, &proc32))
{
cout << "Tread32First() error!" << endl;
CloseHandle(hSnap);
return ;
}

do
{
//cout << "Current process id: " << GetCurrentProcessId() << endl;
wcout << L"Process Name: " << proc32.szExeFile << endl;
cout << "Process ID: " << proc32.th32ProcessID << endl;
cout << "Thread Count: " << proc32.cntThreads << endl << endl;

names.push_back(proc32.szExeFile);
ids.push_back(proc32.th32ProcessID);
}
while (Process32Next(hSnap, &proc32));

// use names and ids as needed...

Или же:

PROCESSENTRY32W proc32;
vector<PROCESSENTRY32W> procs;

if (hSnap == INVALID_HANDLE_VALUE)
{
cout << "invalid handle value error!" << endl;
return;
}

proc32.dwSize = sizeof(PROCESSENTRY32W);

if (!Process32FirstW(hSnap, &proc32))
{
cout << "Tread32First() error!" << endl;
CloseHandle(hSnap);
return ;
}

do
{
//cout << "Current process id: " << GetCurrentProcessId() << endl;
wcout << L"Process Name: " << proc32.szExeFile << endl;
cout << "Process ID: " << proc32.th32ProcessID << endl;
cout << "Thread Count: " << proc32.cntThreads << endl << endl;

procs.push_back(proc32);
}
while (Process32Next(hSnap, &proc32));

// use procs as needed...
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector