在不属于创建的子进程的窗口上获取HWND

时间:2018-05-27 10:38:05

标签: c++ winapi explorer 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>),并连续扫描顶级窗口,直到找到其标题包含目录路径的窗口。这显然不是最理想的,所以我正在寻找一些如何做到这一点的技术诀窍&#34;正确&#34;。也许Explorer基础架构提供了干净利落的方法。提前谢谢!

0 个答案:

没有答案