Уничтожение процесса EXCEL.exe из C # в службе Windows - PullRequest
9 голосов
/ 12 апреля 2011

У меня есть служба Windows, которая открывает электронную таблицу Excel через объект Microsoft.Office.Interop.Excel.Application.

Application xlApp = new Application();
Workbook workbook = xlApp.Workbooks.Open(fileName, 2, false);
...
...
workbook.Close();
xlApp.Quit();

Я хотел бы завершить процесс EXCEL.exe, который остается запущенным после того, как он завершил работу с книгой.

Я попробовал следующее безуспешно ...

// This returns a processId of 0
IntPtr processId;
GetWindowThreadProcessId(new IntPtr(xlApp.Hwnd), out processId);
Process p = Process.GetProcessById(processId.ToInt32());   
p.Kill();

У кого-нибудь есть идеи относительно того, как я могу сделать это с помощью службы Windows?

Ответы [ 11 ]

0 голосов
/ 12 апреля 2011

Я бы использовал Process.GetProcess и посмотрел бы там исполняемый файл. Я бы не стал доверять тому, что связано с окном в мире обслуживания, так как я думаю, что окна создаются на рабочей станции, которую вы не используете.не имеет доступа к.

...