Пример «Работа с COM объектами»
Файлы:
- Интеграция
- Работа с COM объектами.перфо
Пример программы на языке программирования Перфо:
//Эта программа написана на языке Перфо
//для демонстрации работы с COM объектами
// Пример 1.
// Работа с объектом Shell
//(Перем Шелл (Новый COMОбъект "Shell.Application"))
(Перем Шелл (ГлобальныйМодуль.ПолучитьCOMОбъект "" "Shell.Application"))
(Вывод "Число открытых окон проводника = " (.(Шелл.Windows)Count) пс)
(Вывод "Объём памяти компьютера = " (Шелл.GetSystemInformation "PhysicalMemoryInstalled") пс)
//Важно!!! Если не освободить COMОбъект, то он останется в памяти до конца программы,
//а может и вовсе остаться висеть в памяти после завершения программы (зависит от устройства объекта).
(COMОбъект.Освободить Шелл)
// Пример 2.
// Работа с Эксель.
//Для правильной работы программы в текущем каталоге
//должен существовать файл Книга.xls,
//а на компьютере должна быть установлена программа Excel
(Попытка(
(Перем Эксель (ГлобальныйМодуль.ПолучитьCOMОбъект "" "Excel.Application"))
(Перем Книга (.(Эксель.Workbooks)Open (& ФС.ТекущийКаталог "Книга.xls")))
(Вывод "Тип объекта ""Книга"" = " (ТипЗнчСтр Книга) пс)
(Перем НомПП 0)
(ДляКаждого (Лист Книга.Sheets)
(++ НомПП)
(Вывод "Имя листа = " Лист.Name пс)
(Вывод "(.(Лист.Cells 1 1)Value) = " (.(Лист.Cells 1 1)Value) пс)
(Вывод "(.(Лист.Cells 2 1)Value) = " (ЕслиНеопределено (.(Лист.Cells 2 1)Value) "") пс)
(Уст . (Лист.Cells 2 1) Value "77")
//после второго листа можем вызвать ошибку
//что бы убедиться, что Эксель закроется нормально и в этом случае
//(Если (= НомПП 2) (ошибочный_идентификатор))
)//КонецЦикла
(Книга.Save)
)
//Исключение
(
(Вывод "Ошибка: " ОписаниеОшибки пс)
)
//Завершение
(
//закрываем книгу и выходим из Экселя
//Внимание!!! Эксель может спросить "Сохранить ли файл?"
//но на Windows 10 (а может и на других)
//диалог вопроса может оказаться под окном консоли !!!!!!!
//а вы подумаете, что программа зависла...
(Если (Определено? Эксель) //эта проверка на случай, если СОМ объект не получилось создать
(
(.(Эксель.ActiveWorkbook)Close)
(Эксель.Quit)
(Вывод "Эксель закрыт!" пс)
)
)
(COMОбъект.Освободить Эксель)
(Вывод "Эксель особожден!" пс)
)
)//КонецПопытки
К началу статьи
Вернуться в раздел:
Примеры по языку Перфо
Перейти в раздел:
Примеры