Переключение видимости окна дочернего процесса в Visual C++ без перезапуска дочернего процесса

Использование Visual Studio 2017.

я использую

siStartInfo.dwFlags & = STARTF_USESHOWWINDOW;

siStartInfo.wShowWindow = SW_HIDE;

создать дочерний процесс (через CreateProcess()) со скрытым окном. Работает отлично.

То, что я хотел бы, если это вообще возможно, это иметь возможность переключать статус видимости окна дочернего процесса, пост-создания, из основной программы по требованию (например, нажатием кнопки). Я хочу контролировать видимость окна дочернего процесса, не перезапуская его через CreateProcess().

Модификация кода дочернего процесса не является опцией - это может быть много разных программ с необязательно доступным исходным кодом.

Заранее спасибо.

1 ответ

Решение

Если вы знаете уникальный класс окна или заголовок дочернего процесса, вы можете использовать FindWindow() чтобы найти это окно.

Для более общего подхода используйте EnumWindows() перечислить все окна верхнего уровня. Для каждого вызова окна GetWindowThreadProcessId() проверить, принадлежит ли он дочернему процессу.

Вызов ShowWindow() переключать видимость

Другие вопросы по тегам