Выполнение программы как потока, а не как процесса - PullRequest
1 голос
/ 03 июля 2010

Есть ли способ выполнить другую программу, такую ​​как блокнот, в виде потока, чтобы он использовал то же пространство памяти, что и моя программа?Так что, если моя программа завершится, то будет и блокнот, чтобы блокнот не отображался в диспетчере задач, только моя программа?

Ответы [ 4 ]

2 голосов
/ 03 июля 2010

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

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

2 голосов
/ 03 июля 2010

Нет, конечно, не для неуправляемого приложения, такого как блокнот.

Однако для управляемого приложения можно загрузить сборку с помощью утилит в System.Reflection и начать выполнение метода Main()(или, скорее, точка входа).

Однако в классе System.Process есть несколько функций, которые могут помочь вам подражать тому, что вы хотите сделать.

1 голос
/ 03 июля 2010

Нет. В любом случае это было бы очень плохой идеей, так как это могло бы привести к возникновению всевозможных неприятных вещей. У другой программы не было бы возможности узнать, что она должна инициализировать, а что уже было инициализировано хост-программой и т. Д.

Однако вы можете принудительно закрыть блокнот с помощью вашей программы. Просто вызовите Process.CloseMainWindow (nice) или Process.Kill (заставьте его умереть) в процессе, который вы создаете при закрытии приложения.

0 голосов
/ 03 июля 2010

Нет, это невозможно (если вы пытаетесь создать какую-то странную среду в стиле виртуализации в рамках одного процесса.)

Чтобы обеспечить совместимость блокнота с вашим приложением, создайте объект задания, назначьте ваше приложениеперед запуском блокнота.Когда ваша программа закрывается, объект задания будет уничтожен, и все дочерние процессы в объекте задания также будут закрыты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...