c++ - 获取浏览器进程 ID,然后在 C++ 程序中使用它
问题描述
我正在尝试为浏览器(Chrome 和 Firefox)创建一个简单的单词荧光笔,我希望我的程序使用进程名称(chrome.exe
或firefox.exe
),然后获取它们的进程 ID。
我找到了可以让我获取进程 ID 的代码,但它需要用户手动键入进程名称:
#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
现在,有没有办法通过检查用户是否正在运行来操作此代码以自动获取进程 ID chrome.exe
?
在获得进程 ID 之后,我如何让我的程序明白它需要专注于所说的 ID?
解决方案
现在,有没有办法通过检查用户是否运行 firefox.exe 或 chrome.exe 来操作此代码以自动获取进程 ID?
#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 :(
}
}
在获得进程 ID 之后,我如何让我的程序明白它需要专注于所说的 ID?
很抱歉,但我不知道您所说的“让我的程序明白它需要专注于所说的 ID”是什么意思。
推荐阅读
- java - log4j 类配置器中没有方法 setRootLevel()
- c - 无法从自定义内核模块在 /proc 中创建目录
- c# - 在 ASP.NET MVC 中将 Excel 包文件下载到本地计算机
- c++ - GLib-CRITICAL **:14:27:14.210:g_once_init_leave:在 Qt 项目中初始化结构时,断言“结果!= 0”失败
- flutter - 如何在 Flutter 中启用 Multiprovider 4.0.0 中的构建器
- package - 使用 Sphinx 为子包自动生成文档
- reactjs - 反应变量没有在渲染中显示,但是在重新加载后它们会出现,出了什么问题
- python - PYTHON:如何以不同的能力开始每个测试?
- python-3.x - Scipy optimize.minimize 具有 2 个实变量和 1 个参数的复杂函数
- ios - Google Firebase 动态链接:将自定义参数添加到动态链接