Страница 1 из 1

Работа IAS с Excel

СообщениеДобавлено: Пн ноя 01, 2010 1:31 pm
skom
Добрый день, читая документацию по IAS я встретил несколько примеров работы с Excel:
-- с помощью библиотеки импортированных типов;
-- с помощью функции CreateObject.

1. Мы используем 2 пример, и существует одна проблема -- как закрыть процесс excel.exe с учётом того, что может быть открыто несколько процессов (как документов на сервере, так и процессов для формирования отчётов в IAS). Т.е. надо как-то при старте процесса запомнить его PID, и убить процесс по нему. Вопрос в том как это сделать при использовании функции CreateObject?

2. Где взять эту библиотеку импортированных типов для работы с Excel? Или её надо самому скомпилировать например на c#? Есть ли вообще где-нибудь стандартные библиотеки, доступные для скачивания? Ведь, как я понимаю, пример приведён в документации, то всё это где-то есть в электронном виде?

СообщениеДобавлено: Пн ноя 08, 2010 8:34 am
Klinkmann_Msk
To skom:

System.Diagnostics.Process.Id
Вроде он должен возвращать PID

СообщениеДобавлено: Ср ноя 10, 2010 12:13 pm
skom
Klinkmann_Msk писал(а):To skom:

System.Diagnostics.Process.Id
Вроде он должен возвращать PID


Надо знать handle окна, нам надо убить одно окно из набора.

СообщениеДобавлено: Ср ноя 10, 2010 12:16 pm
Klinkmann_Msk
To skom:

Насколько я помню, Handle присваивается при выполнении CreateObject?

СообщениеДобавлено: Ср ноя 10, 2010 1:55 pm
skom
Klinkmann_Msk писал(а):To skom:

Насколько я помню, Handle присваивается при выполнении CreateObject?


при выполнении

app = CreateObject("Excel.Application");

в app содержится указатель на область памяти, в котором располагается объект Excel.Application, а не handle окна. Я так понимаю.

т.е. если я делаю так:

app1 = CreateObject("Excel.Application");
app2 = CreateObject("Excel.Application");
app3 = CreateObject("Excel.Application");

как мне убрать из памяти процесс app2, чтобы и 1 из 3 процессов excel закрылся. Вот в чём проблема.