获取浏览器进程ID,然后在C++中使用它
我正在尝试为浏览器Chrome和Firefox创建一个简单的单词highlighter,我希望我的程序使用进程名Chrome.exe或Firefox.exe,然后获取它们的进程ID 我找到了可以获取进程ID的代码,但需要用户手动键入进程名称:获取浏览器进程ID,然后在C++中使用它,c++,winapi,pid,C++,Winapi,Pid,我正在尝试为浏览器Chrome和Firefox创建一个简单的单词highlighter,我希望我的程序使用进程名Chrome.exe或Firefox.exe,然后获取它们的进程ID 我找到了可以获取进程ID的代码,但需要用户手动键入进程名称: #include "pch.h" #include <iostream> #include <string> #include <windows.h> #include <tlhelp32.h> DWORD
#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来操作此代码以自动获取进程ID
在获得进程ID之后,我如何让我的程序理解它需要关注所述ID
现在,有没有一种方法可以通过检查用户是运行firefox.exe还是chrome.exe来操作此代码以自动获取进程ID
在获得进程ID之后,我如何让我的程序理解它需要关注所述ID
很抱歉,我不知道你所说的让我的程序明白它需要专注于所说的ID是什么意思。我有一种强烈的感觉,这种方法是错误的,因为它可以不费吹灰之力地实现你想要的。你是否考虑过编写一个浏览器插件/扩展?我的意思是,我只教了C++,到目前为止,我能用这个插件编写插件吗?C++与WinAPI ist并不是你想要实现的正确工具。祝你好运,用“Chrome进程ID”做任何事情。在我的机器上运行的Chrome .EXE至少有十几个实例。噢,别介意这个问题,我已经在代码中看到了答案。我忘记了我可以使用if函数在特定进程运行时让我的程序执行某些操作。
#include <iostream>
#include <string>
#include <windows.h>
#include <tlhelp32.h>
DWORD FindProcessId(const std::wstring& processName);
int main()
{
std::wstring fifi = L"firefox.exe";
std::wstring gogo = L"chrome.exe";
auto fifi_proc_id = FindProcessId(fifi);
auto gogo_proc_id = FindProcessId(gogo);
if(fifi_proc_id && gogo_proc_id) {
// both runnin O.O what now?
}
else if(fifi_proc_id) {
// firefox running ... do stuff
}
else if(gogo_proc_id) {
// chrome running ... do stuff
}
else {
// none of both :(
}
}