• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Автоматизация PowerPoint в Delphi.

  • Автор темы Mick Winder
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Mick Winder

Необходимо добавить объект Point в презентацию. Используется функция AddOLEObject.
Его конструкция в
и в PowerPoint_TLB:
Код:
function AddOLEObject(Left: Single; Top: Single; Width: Single; Height: Single; 
            const ClassName: WideString; const FileName: WideString; 
            DisplayAsIcon: MsoTriState; const IconFileName: WideString; 
            IconIndex: SYSINT; const IconLabel: WideString; Link: MsoTriState): Shape;

Написал такой следующий код:
Код:
PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(120, 110, 480,
320, 'Paint.Picture', EmptyParam, msoFalse, EmptyParam, 0, EmptyParam, msoFalse).Select;

Вызывает ошибку: Type mismatch. В чем ошибка? Не врублюсь... Я итак и эдак...
 
A

admin

Mick Winder
с Office сильно не работал в Delphi, вот посмотри код
а так надо смотреть соответсивие типов, к сожалнию в моей делфе нету компонентов под офис <_<
 
B

Barmutik

Если нужно вставить всего-то картинку .. то можно попробовать метод AddPicture..он работает ..

Просто насколько мне не изменяет память MS Paint не реализует COM интерфейса для возможности его использования в качестве встроенного OLE объекта.
 
M

Mick Winder

Серёга
Спасибо за ссылку... Но именно это я и получил в виде макроса. Все типы я указал выше, что в MSDN и что в библитеке PowerPoint типы одинаковые.
Компоненты устанавливать в Дельфи необязательно, достаточно импортировать бибьлиотеки. Если хочешь, могу подсказать как, может пригодиться для тебя.

Barmutik
Должен реализовывать, если в библиотеке PowerPoint_TLB предусмотрены такие функции.
Мне нужно не просто рисунок вставить от "делать нечего", а в этот объект вставить часть таблицы Excel, чтобы выставить в виде рисунка. Поэтому мне придется потом использовать функцию Activate.
У меня складывается такое впечатление, что Дельфи просто вредничает!
 
M

Mick Winder

Серёга
Barmutik

Спешу поделиться решением проблемы! :)

Код:
PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120, Top:=130, 
Width:=480, Height:=340, ClassName:='Paint.Picture', Link:=msoFalse).Select;

Вот теперь буду ломать голову, чтобы вставить в этот объект таблицу из буфера... Функции я, увы, не нашел... :(
 
M

Mick Winder

Серёга
<_<

Ну, например, подключение библиотеки PowerPoint_TLB.

В Delphi: Project - Import Type Library... Ищем в списке Microsoft PowerPoint Library(Version 2.7), если нету, то c помощью кнопки Add... ищем библиотеку С:\Program Files\Microsoft Office\Office10\msppt.olb и подключаем ее с помощью кнопки Install (устанавливается как правило в папку Import). Можно сформировать unit этой библиотеки, чтобы просмотреть все функции, процедуры и свойства этой библиотеки, с помощью кнопочки Create Unit.
Далее используем эту библиотеку...
Код:
 uses 
PowerPoint_TLB;
Вот и всё. Думаю, ты и сам знал, пригодится и другим, кто не знает. :angry:
 
B

Barmutik

Так а почему пытаемся вставить Paint.Picture если нужня таблица Экселя? Или я что-то не так понял?

Для вставки таблицы Экселя:

Код:
Slide.Shapes.AddOLEObject(x,y,width,height,'Excel.Sheet','',0,'',0,'',0);
 
A

admin

Mick Winder
спасибо.
я просто не работал никогда с офисом в делфи, не приходилось, но теперь буду знать <_<
 
M

Mick Winder

Barmutik!!!!
Жму крепко твою руку за идею! Ты меня спас! :unsure:
 
B

Barmutik

:unsure: Ура :unsure: :blink:

PowerPoint повержен ... только сильно крепко не жми .. а то рука болеть будет .. а ей на клавиши жать надо :blink:
 
M

mrDuke

Подскажите пожалуйста... На слайде есть 10 кнопок с ссылками на другие слайды... а так же кнопки ттипа "назад" и "далее". Как программно из Delphi нажать любую из них?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!