Mohankumar.Engain Ответов: 3

Как получить идентификатор процесса и как убить этот конкретный процесс из всех процессов?


Всем Привет,

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

Примечание:
1. Я открыл один лист Excel ,
2. Теперь я создаю еще один лист excel через vb.net время выполнения программно.
3. Я хочу убить только второй процесс, посредством программно.
4. Не убивайте первый процесс

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

[no name]

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

Richard MacCutchan

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

Mohankumar.Engain

Я не хочу убивать весь процесс excel, мне нужно убить только один процесс excel. Остальные файлы excel закрывать не нужно.

Nelek

Шаг 1) проведите небольшое исследование. Google - это хорошая отправная точка
Шаг 2) Начните кодирование
Шаг 3) скомпилируйте и используйте отладку для решения небольших проблем
Шаг 4) Когда вы получаете проблему, которую вы не знаете, как решить но ты хотя бы попробовал, затем вернитесь и попросите что-то конкретное с фрагментом кода, дающим проблемы

Извините, если это не тот ответ, который вы искали. Но ваш вопрос слишком широк, чтобы ответить на него "быстрыми" ответами. Лучше и вы получите более быструю помощь, если сделаете 10 конкретных вопросов о конкретных проблемах, чем большой вопрос о том, "как вести себя"

Кроме того, Пожалуйста, прочтите:
А что вы пробовали?[^]
Как задать вопрос?[^]

ZurdoDev

Поскольку вы создали процесс в коде, вы можете легко убить его в коде. Где ты застрял?

Если у вас есть что-то oExcel = Excel.Приложение, то вы можете сделать oExcel.Quit();

kartikguha

Привет Mohankumar,

Если вы удовлетворены одним из решений, пожалуйста, отметьте его как решение.

Если у вас есть еще какие-то сомнения, пожалуйста, сообщите об этом.

[no name]

Как все говорят, вы начали процесс, вы можете убить его. Просто начать процесс, отпустить его на самотек и выследить его позже, чтобы убить, - это не лучший способ сделать это. Используете ли вы мьютекс для сигнализации о завершении процесса? Если нет, то почитайте на эту тему.

3 Ответов

Рейтинг:
2

kartikguha

Если вы создаете/открываете файл excel с помощью кода, просто закройте этот файл и удалите объект, который вы использовали для создания/открытия файла excel.

Если вы разместите код, как вы создаете/открываете файл, то я могу попытаться дать вам конкретное решение.

На данный момент предположим, что вы создали объект "excl" для приложения excel и еще один объект "wrkSht" для требуемого рабочего листа.

тогда просто используйте

wrkSht.Сохранить()
wrkSht.Распоряжаться()
искл.Распоряжаться()

Я не думаю, что кто-то посоветовал бы убить процесс excel, когда есть более управляемые способы сделать то, что вы хотите :)


Mohankumar.Engain

Привет Картикгуха,
У меня есть следующий код:
----------------------
Процесс.Начало("C:\File.xls")
Как только этот вышеописанный процесс будет запущен, я хочу получить этот идентификатор процесса excel
но я написал ниже код, который я получаю идентификатор процесса visual studio, как я могу получить этот идентификатор excel через код?
Dim s2 = процесс.GetCurrentProcess().Id

Рейтинг:
0

kartikguha

Вот, держи...


Dim p As Process
p = New Process()
p.StartInfo.FileName = "filename_with_complete_path.xls"

p.Start()


и закрыть его

p.Kill()


Если файл должен быть закрыт в какой-либо другой функции, отличной от той, в которой он был открыт, объявите переменную процесса
'p'
глобально (или в пределах надлежащего объема в соответствии с вашим требованием)


Рейтинг:
0

Ziee-M

Привет Mohankumar,

1/ мы должны выбрать новый созданный PID процесса

Process myProc = Process.Start("process full path");
int processId = myProc.Id;



2/ убить процесс на основе его PID

//we use the PID to select and kill that specific process

Process processes = Process.GetProcessById(processId);
processes.Kill();


Надеюсь, это поможет.


kartikguha

Я не думаю, что @Mohankumar.У энгейна есть какие-либо требования для идентификации processId, все, что он хочет сделать, это убить excel.exe процесс создан программно.

Процессы процесса = процесс.Как метод getprocessbyid(процесса);

Здесь, по сути, "процессы" относятся только к "myProc".
Так почему бы прямо не убить "myProc" (что я и сделал в своем решении)?

И кстати

Процесс.Как метод getprocessbyid(процесса);

возвращает не список процессов (так как processId уникален для каждого процесса), а экземпляр процесса с указанным processId. Поэтому название "процессы" для меня не имеет смысла...

Но, глядя на ваши общие очки репутации, я думаю, что это просто опечатка :)