c++ - 从 PID 的 HWND 截屏
问题描述
我目前正在创建一种截取窗口屏幕截图的方法。现在我正在指定要截屏的应用程序的 PID。我通过使用此函数获取与该 PID 关联的 HWND
void GetAllWindowsFromProcessID(DWORD dwProcessID, std::vector <HWND> &vhWnds) {
// find all hWnds (vhWnds) associated with a process id (dwProcessID)
HWND hCurWnd = nullptr;
do {
hCurWnd = FindWindowEx(nullptr, hCurWnd, nullptr, nullptr);
DWORD checkProcessID = 0;
GetWindowThreadProcessId(hCurWnd, &checkProcessID);
if (checkProcessID == dwProcessID) {
vhWnds.push_back(hCurWnd);
}
} while (hCurWnd != nullptr);
}
一旦我有了与该 PID 关联的 HWND 的向量,我就会使用我的屏幕截图代码循环并保存每个屏幕截图。
当我使用 Notepad++ (PID 712) 运行此代码时,我得到了 7 个与 PID 关联的 HWND。我已经检查了所有 7 个,除了最后一个打印 Notepad++ 之外,它们都打印了一个黑屏。如果我在记事本或计算器上尝试这个,我只会得到一个黑屏。
我正在使用的完整测试代码..
snip
解决方案
推荐阅读
- google-cloud-platform - 将项目 (VM) 迁移到另一个 GCP 帐户以使用免费层
- c++ - 为什么我的结构占用的内存比请求的多?
- javascript - How do I make an array with inputs and then pass it to another function jQuery
- php - 数组中的值?
- javascript - Getting null value when interpolating in querySelector - works when hard-coded
- node.js - npm 安装错误:找不到模块'read-package-tree'
- flutter - Flutter - multiple errors when running tests
- visual-studio - 如何在源代码控制(Visual Studio 和 TFS)中比较文件 .csproj 与最新版本
- python - Get Text By Using Selenium WebDriver
- c - 从附加的 for 循环访问 for 循环索引变量