|
Убить процесс EXCEL.EXE через com
| ☑ |
0
Tateossian
08.05.14
✎
11:55
|
Господа! Делаю вот так (Excel - com-сервер экселя):
Если Excel <> Неопределено Тогда
Excel.Application.Quit();
Excel = Неопределено;
КонецЕсли;
Excel так и остается в процессах. ЧЯДНТ?
|
|
1
Сергиус
08.05.14
✎
11:59
|
(0) Возможно это тот процесс, который был открыт до этого..
|
|
2
Чайник Рассела
08.05.14
✎
12:00
|
Excel.DisplayAlerts = 0;
Excel.Quit();
|
|
3
Сергиус
08.05.14
✎
12:00
|
+(1)Поубивай все вручную..и проверь еще раз)
|
|
4
koreav
08.05.14
✎
12:00
|
ExcelApplication.Application.Quit();
ExcelApplication = Неопределено;
COMОбъект = ПолучитьCOMОбъект(ПутьКФайлу);
COMОбъект.Close();
|
|
5
Tateossian
08.05.14
✎
12:15
|
(3) Юзер жалуется, что это неудобно (у него несколько экселей может быть запущено и может кильнуть нужный). А так, я предложил:3
|
|
6
Tateossian
08.05.14
✎
12:16
|
(1) Я на одном тестировал процессе.
|
|
7
Tateossian
08.05.14
✎
12:25
|
(4) Ха, прикольно. Выдает предупреждение "Сервер занят": действие не может быть завершено, так как другая программа занята...
|
|
8
Tateossian
08.05.14
✎
12:37
|
Комрады, нужна подсказка куда копать.
|
|
9
Сергиус
08.05.14
✎
12:50
|
(8) вообщем тебе надо сделать неопределенным не только само СOM соединение, но и все объекты, которые ты получал через него. Пример:
Попытка
Коннектор = Новый COMОбъект("V82.COMConnector");
Соединение = Коннектор.Connect("Usr=Имя;Pwd=Пароль;Srvr=Сервер;Ref=база;");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Запрос = Соединение.NewObject("Запрос");
Чтобы все прибить, надо:
Запрос = "";
Коннектор = "";
Именно в таком порядке... Сначала все объекты, которые создал через COM, в самом конце Коннектор
|
|
10
Maxus43
08.05.14
✎
12:57
|
Excel.Application юзаешь же? юзай COMConnector
|
|