0
안녕하십니까, 모든 프로세스를 거치지 않고 이름으로 WINAPI 프로세스 핸들을 얻을 수 있습니까? 나는 모든 과정을 반복하여 이름으로 프로세스 핸들을 WINAPI하는 방법을 알고 :모든 프로세스를 반복하지 않고 프로세스 이름별로 WINAPI 프로세스 핸들을 얻을 수 있습니까?
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE){
while (Process32Next(snapshot, &entry) == TRUE)
{
if (stricmp(entry.szExeFile, ProcessName) == 0){
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
// measure process memory usage
CloseHandle(hProcess);
}
}
}
CloseHandle(snapshot);
그러나, 프로세스 스냅 샷을 반복하는 데 상당한 시간이 걸릴 것처럼 보인다. 고맙습니다.
내부적으로 프로세스가 연결된 목록에 유지되므로 궁극적으로 누군가를 통해 반복하고 이름을 비교해야합니다. 나는 당신의 염려가 무엇인지 정말로 안다. 가장 (극단적 인) 문자열 비교는 전혀 시간이 많이 걸리지 않을 것입니다. – Luke
C#에서는 GetProcessesByName을 호출 할 수 있습니까? 관리되지 않는 C++에는 이와 비슷한 것이 있습니까? 도와 줘서 고마워. –
아니요, Win32 API 또는 프레임 워크 (ATL/MFC/등)에 내장되어있는 것과 같은 것이 없습니다. 직접 작성해야합니다. 코드 예제는 충분해야합니다. GetProcessesByName()은 커버 아래의 것과 비슷한 것을 수행합니다. – Luke