簡體   English   中英

獲取進程ID

[英]Getting process ID's

我下面的程序會將進程的names連接到names字符串中。 如何更改它以包含進程ID而不是名稱? 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));

由於無論如何都在使用C ++,因此應該使用它。 使用std::vectorstd::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...    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM