1. Правильно я понимаю, что Prog3.exe это "левая" программка не сделанная тобой, или сделанная в Hiasm?
2. Что нужно получить в конечном итоге? Переназначить каналы ввода вывода, обмен данными через эти каналы, или чего-то ещё – контроль доступа, права, наследование?
3. И конечно Prog3.exe уже запущенный процесс, или его можно запустить после (из) Prog1.exe?
4. Может быть вот это https://habrahabr.ru/post/180933/ надо?
Создание процесса ОС Windows
В ОС Windows процессы создаются через системный вызов NtCreatProcess() – данный вызов имеет множество параметров, многие из которых «по умолчанию».
Процесс порождается непосредственно по желанию, он не должен быть обязательной копией текущего, поэтому не соблюдается родство.
Хэндл процесса – существительное (дословно переводится «ручка»). Это сущность доступа к процессу – некоторое целое число, которое является индексом в определенной таблице и позволяет идентифицировать этот процесс – контроль доступа, права, наследование.
Pid – это смещение (индекс) в таблице процессов.
Иерархия процессов в ОС Windows
Ее нет, все равны. Поэтому встает вопрос взаимодействия.
Хэндл процесса – когда новый процесс создается родительским, то родитель получает хэндл дочернего процесса и таким образом может им управлять.
Этот хендл может передаваться другим процессам, в отличии от Unix, где родительский процесс не может менять множество дочерних процессов.
Хэндл процесса – идентификатор объекта процесса.
То отвечая прямо на вопрос можно ли переназначить - да можно, но не вместо Prog2.exe. (при убивании процесса Prog2.exe...)
Как? Это другой вопрос.
Потому, что у Prog3.exe есть свой цикл обработки сообщений. Он крутится в ЕЁ адресном пространстве. А у твоей Prog1.exe свой цикл. И крутится он в ТВОЕМ адресном пространстве.
Несколько раз встречал решение в интернете, но не нужно было.