Несмотря на то, что в Compact Framework нет встроенного способа составления списка всех процессов, все же легко управлять созданными вами процессами.
Когда вы используете Process.Start (имя, аргументы) , вы получаете только логическое значение.
Это связано с тем, что эта функция является общей функцией, которая предназначена для использования при создании процесса, а затем не заботится о нем. Он просто говорит, создал ли он его или нет.
Что вам действительно нужно, так это получить копию дескриптора процесса при запуске исполняемого файла, а это означает, что вам нужно создать новый экземпляр из Process и затем использовать методы в этом случае, чтобы запустить ваш исполняемый файл.
Итак, создайте новый экземпляр Процесс - назовите его P . Теперь это фактически дескриптор процесса, но он еще не связан с процессом.
Вы обнаружите, что P предоставляет гораздо больше атрибутов.
Установите имя исполняемого файла и аргументы (если они есть) в
P.StartInfo.FileName и P.StartInfo.Arguments
а теперь позвони
P.Start ()
Если он возвращает True, это помещает идентификатор процесса в P.Id для вас и поддерживает прямую ссылку на ваш процесс.
Значения в P.Responding P.HasExited и P.ExitCode сообщают, работает ли он по-прежнему и, если нет, как он закончился, и Вы можете использовать функцию без параметров P.Kill () , чтобы завершить ее, когда вам это надоело, потому что она завершает процесс, связанный с дескриптором.
Просто создайте новый экземпляр Процесс для каждого процесса, которым вы хотите управлять, запустите его с помощью переменной создания экземпляра, а не общей общей функции Process.Start () и сохраните это как ваша ссылка на процесс.
Если вы сохраняете только значение P.Id , вы все равно можете использовать общую функцию Process.Kill (Id) , чтобы завершить его, и вы можете использовать Process .GetProcessById () , чтобы получить ссылку на экземпляр дескриптора, который ссылается на него.
Это должно работать на любом языке.
Структура Process также содержит нечто, называемое MainWindowHandle , которое выглядит как дескриптор задачи создания. Я никогда не проверял, соответствует ли он, но он заполняется.
Итак, если вы хотите уничтожить «Windows \ MyProcc.exe», это легко, при условии, что это действительно «ваш процесс», потому что вы можете создать его таким способом, который возвращает вам его Id и дескриптор.
Если «Windows \ MyProcc.exe» действительно «Windows \ Someone-elses-Procc.exe», то это не так просто, потому что вам нужно знать Id, и нет простого способа получить его, если он не ваш.
Надеюсь, это поможет.