Использование SetForegroundWindow
и других способов настройки фокуса имеет множество ограничений.Если вы действительно хотите быть уверены, что запущенный процесс получит фокус, я рекомендую вам использовать следующие собственные (неуправляемые) функции
SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout, 0);
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)0,
SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
перед запуском процесса и восстановить
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout,
SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
приконец.Вызов типа
WaitForInputIdle (pi.hProcess, 5000);
после запуска программы и до восстановления SPI_SETFOREGROUNDLOCKTIMEOUT
также может быть полезен, если у вас возникнут проблемы с немедленным