Получить HWND в окне, которое не принадлежит созданному подпроцессу - PullRequest
0 голосов
/ 27 мая 2018

Я запускаю новое окно Windows Explorer со следующим кодом, и мне нужно получить 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>) и непрерывно сканировать окна верхнего уровня, пока не будет найдено окно, название которого содержит путь к каталогу.Это явно неоптимально, поэтому я ищу некоторые ноу-хау о том, как сделать это «правильно».Возможно, в инфраструктуре Explorer есть способ сделать это чисто.Заранее спасибо!

...