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

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

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

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

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

Определение типа объекта на слайде Powerpoint

  • Автор темы Mick Winder
  • Дата начала
M

Mick Winder

Всем привет! Давненько здесь не было! Как здорово всё изменилось!!! Класс!
итак сам вопрос...
Как определить к какому типу принадлежит ВЫДЕЛЕННЫЙ объект на слайде, например, к msoPicture, msoTable, msoChart и т.д.?
 
B

Barmutik

Хмм.. а попробовать по Type? или перебрать перебором типов .. что подойдёт того типа и есть ...
 
B

Barmutik

Что конкретно не получается ? Пройтись по списку объектов или QueiryInterface на соответствие типу?
 
M

Mick Winder

Смотрел уже файл PowerPoint_TLB - пальцем водил последовательность списка нужных мне объектов, попробовал прописать, но... выдается сообщение, что, мол, неверно составлена последовательность объектов...
Перепробовал все варианты... Тут черт голову сломает!
 
B

Barmutik

Ваш Код в студию пожалуйста... если возможно вместе с презентацией .. что б было на чём посмотреть ...
 
M

Mick Winder

Код:
unit Unit1;

interface

uses
... ActiveX, ComObj, PowerPoint_TLB, Office_TLB;

type
TForm1 = class(TForm)
 Button1: TButton;
 Button3: TButton;
 procedure Button1Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
end;

var
Form1: TForm1;
PowerPointApp: OLEVariant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
PowerPointApp:= CreateOleObject('PowerPoint.Application');
except
ShowMessage('Error Powerpoint...');
exit;
end;
PowerPointApp.Visible:= True;
PowerPointApp.Presentations.Open('E:\LPT_2\Report_made.ppt', False, False, True);
 end;

procedure TForm1.Button3Click(Sender: TObject);
begin
PowerPointApp.Presentations.Item(1).Slides.Item(4).Select;
PowerPointApp.Presentations.Item(1).Slides.Item(4).Shapes.Item(3).Select;
if PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.Type = msoPicture then
ShowMessage('Сработало!')
else
ShowMessage('Не то!');   
end;

end.
 
B

Barmutik

Мне кажется что стоит попробовать так:

Код:
if PowerPointApp.ActiveWindow.Selection.ShapeRange.Type_ = msoPicture then
ShowMessage('Сработало!')
else
ShowMessage('Не то!');   
end;

Опять же есть оговорки... сначала вообще у селекшина нужно проверять его тип.. только потом если он = ppSelectionShapes то брать ShapeRange... да и в общем случае выделено может быть не одна фигура .. их нужно перебирать и смотреть по типу потом уже.. но для конкретного случая должно сработать...
 
M

Mick Winder

Я это всё перепробовал... Даже если написать:
Код:
PowerPointApp.ActiveWindow.Selection.Type_ = ppSelectionShapes
То тут выводится ошибка, что "Method 'Type_' not supported by automation object" Вот из-за нее "родимой" и мучаюсь...
 
B

Barmutik

Проблема понятна ;)

Я прошёл всеь код .. стоит написать вот так:

.....Type - БЕЗ подчёркивания в конце .. и всё работает...
 
Мы в соцсетях:

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