Есть ли способ, чтобы процесс, созданный CreateProcess, был открыт в другом окне? - PullRequest
1 голос
/ 23 сентября 2010

Я хочу иметь возможность открывать приложение с графическим интерфейсом, используя CreateProcess в основном процессе, и отображать его в окне, которое я создаю из основного процесса.Кто-нибудь знает, как этого добиться?Спасибо!

Ответы [ 2 ]

6 голосов
/ 23 сентября 2010

Если вы управляете обоими приложениями, тогда да.

Вот так отображаются заставки на панели управления заставкой - панель управления пропускает диалоговое окно в командной строке и файл .scr- который является простым exe - создает свое окно как дочернее, используя данный hwnd в качестве его родителя.

Захват ранее написанного окна верхнего уровня и принудительное его существование в вашем собственном фрейме, однако, не очень хорошо поддерживается.

Опять же, это то, что вы можете легко попробовать: я написал тестовое приложение, которое создало пустое окно фрейма, сделал FindWindow для копий Блокнота и заново отредактировал окно блокнота, чтобы оно было дочерним для моего фрейма.1007 *

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

1 голос
/ 23 сентября 2010

Нет, вы не можете сделать это.

Что-то, что может сработать ... Вы можете запустить процесс, а затем, используя дескриптор окна, применить ряд изменений к окну, чтобы снять кадр. Затем вы можете переместить его в положение какого-либо другого элемента управления размещением в вашем окне, а когда у вас есть события перемещения / изменения размера, вы также измените размер этого дочернего окна.

...