Убить конкретный экземпляр Winword - PullRequest
0 голосов
/ 07 января 2011

мое приложение создает новый экземпляр winword, встроенный в форму окна.

new Microsoft.Office.Interop.Word.ApplicationClass()

Когда пользователь заканчивает редактирование, я закрываю окно, но экземпляр winword все еще работает в фоновом режиме.

Как я могу убить этот конкретный экземпляр?Я знаю, как убить все экземпляры, работающие на машине, но это не вариант.

Ответы [ 3 ]

1 голос
/ 07 января 2011

Для этого есть разные методы (я думаю, Marshal.ReleaseComObject - наиболее используемый).

Я предлагаю вам прочитать официальную документацию по выпуску экземпляров приложений Office.это доступно здесь: Разработка Microsoft .NET для Microsoft Office / Выпуск COM-объектов

1 голос
/ 07 января 2011

Вам нужно позвонить

application.Quit()

в вашем коде.

Одна вещь, которую я должен был сделать в своей системе (это инструмент обработки Excel), это выполнить уничтожение процесса, если послеБросить дела все еще продолжалось.

var openedExcel = System.Diagnostics.Process.GetProcessesByName("EXCEL");
            if (openedExcel.Any())
            {
                foreach (var excel in openedExcel)
                {
                    try { excel.Kill(); }
                    catch { }
                }
            }
0 голосов
/ 11 марта 2012

Предлагаю вам объединить / добавить к ответу Флавиотсфа следующий код - который определит, какой фактический процесс выполняется:

Process[] myProcList = Process.GetProcesses();
for (int i = 0; i <= myProcList.Length - 1; i ++) {
    string strProcessName = myProcList [i].ProcessName;

    string strProcessTitle = myProcList [i].MainWindowTitle();
         //check for your process name. 
    if (strProcessName.ToLower().Trim().Contains("access")) {

       myProcList [i].Kill();
    }
}
...