Red de conocimiento informático - Computadora portátil - C++ Obtener el PID del proceso por nombre del proceso

C++ Obtener el PID del proceso por nombre del proceso

Es suficiente tener una instantánea del proceso. Puedes mirar el siguiente código y elegir lo que necesitas

void CLoaderDlg::UpdateProcessList()

{

UpdateData. ( VERDADERO);

m_ProcList.DeleteAllItems();

MYHOOKSTRUCT ProcHookArry[20];

memset(ProcHookArry,0,20*sizeof(MYHOOKSTRUCT)) ;

int nCount = 0

CString str="";

//Segundo=1;

PROCESSENTRY32 pe32;/ / estructura de información del proceso

pe32.dwSize = sizeof(pe32); // El tamaño debe completarse primero.

HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(hProcessSnap == INVALID_HANDLE_VALUE)

{

MessageBox( "Error en la llamada a CreateToolhelp32Snapshot", "Advertencia");

return;

}

BOOL bMore = ::Process32First(hProcessSnap,& amp;pe32);

while(bMás)

{

/Nota: Cuando se selecciona ordenar en un control de cuadro de lista, el ID no coincide con el nombre del programa.

if(strcmp(strupr(pe32.szExeFile), "NOTEPAD.EXE")==0)

{

ProcHookArry[nCount].ProcessID= pe32.th32ProcessID;

ProcHookArry[nCount].ThreadID=GetThreadId(pe32.HookFlag=0;

nCount++;

}

bMás = ::Process32Next(hProcessSnap,&pe32);

}

::CloseHandle( hProcessSnap);

for(int i=0;i

{

for(int j=0;j

{

if(ProcHookArry[ i] .ThreadID==m_ProcHookArry[j].ThreadID)

{

ProcHookArry[i].hHook=m_ProcHookArry[j].hHook;

ProcHookArry [i].hWnd=m_ ProcHookArry[j].hWnd;

ProcHookArry[i].ProcessID=m_ProcHookArry[j].ProcessID;

ProcHookArry[i].HookFlag=m_ProcHookArry [j ].HookFlag;

strcpy(ProcHookArry[i].Name,m_ProcHookArry[j].Name);

break;

}

}

memcpy(m_ ProcHookArry,ProcHookArry,nCount*sizeof(MYHOOKSTRUCT));

m_HookArryLen=nCount;

int index=0;

for(int n=0;n

{

str.Format("%d",m_ProcHookArry[n]. ThreadID);

index=m_ProcList.GetItemCount();

m_ ProcList.InsertItem(index,str);

m_ProcList.SetItemText(index,1, m_ProcHookArry[n].SetItemText(index,2,str);

}

char buf[100]={0};

::GetWindowText( m_ProcHookArry[n].hWnd,buf,100);

str=buf;

m_ProcList.SetItemText(index,3,str);

// ::SendMessage(m_ProcHookArry[n].hWnd,WM_CLOSE,0,0);

}

UpdateData( FALSE);

}