首页 > 解决方案 > 在不属于创建的子进程的窗口上获取 HWND

问题描述

我正在使用以下代码启动一个新的 Windows 资源管理器窗口,并且需要获取窗口的 HWND,最好尽早(即在显示窗口之前):

char cmdLine[MAX_PATH] = "explorer.exe";
STARTUPINFO si;
PROCESS_INFORMATION pi;

CreateProcess(
 NULL,
 cmdLine,
 NULL,
 NULL,
 FALSE,
 0,
 NULL,
 NULL,
 &si,
 &pi
);

但是,窗口不属于创建的子进程,因此获取句柄需要非常规技巧。到目前为止,我尝试将窗口打开到具有特殊名称(如%TEMP%\<guid>)的目录,并不断扫描顶级窗口,直到找到标题包含目录路径的窗口。这显然不是最理想的,所以我正在寻找一些关于如何“正确”做到这一点的诀窍。也许资源管理器基础设施具有干净利落的方式。先感谢您!

标签: c++winapiexplorerhwnd

解决方案


推荐阅读