Я пытаюсь создать простую подсветку слов для браузеров (Chrome и Firefox), и я хотел бы, чтобы моя программа использовала имя процесса (chrome.exe
или firefox.exe
), а затем получила идентификатор процесса.
Я нашел код, который позволяет мне получить идентификатор процесса, но он требует, чтобы пользователь набрал имя процесса вручную:
#include "pch.h"
#include <iostream>
#include <string>
#include <windows.h>
#include <tlhelp32.h>
DWORD FindProcessId(const std::wstring& processName);
int main()
{
std::wstring processName;
std::wcout << "Enter the process name: ";
std::getline(std::wcin, processName);
DWORD processID = FindProcessId(processName);
if (processID == 0)
std::wcout << "Could not find " << processName.c_str() << std::endl;
else
std::wcout << "Process ID is " << processID << std::endl;
system("PAUSE");
return 0;
}
DWORD FindProcessId(const std::wstring& processName)
{
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
return 0;
Process32First(processesSnapshot, &processInfo);
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while (Process32Next(processesSnapshot, &processInfo))
{
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
Теперь есть способ манипулировать этим кодом, чтобы он мог получитьидентификатор процесса автоматически, проверяя, работает ли пользователь firefox.exe
или chrome.exe
?
И после получения идентификатора процесса, как я могу заставить мою программу понять, что ей нужно сосредоточиться на указанном идентификаторе?