Я автоматизирую сценарий Powerpoint с помощью Coded UI и VSTO. В презентации Powerpoint я создал параметр 'Action' для формы, чтобы запустить блокнот. Во время показа слайдов мне нужно вызвать это действие, нажав на "текст/фигуру", чтобы она открыла notepad.exe. Кто-нибудь может помочь мне, как этого добиться. Я написал следующий код.
//To launch Powepoint
PowerPoint.Application objPPT = new PowerPoint.Application();
objPPT.Visible = Office.MsoTriState.msoTrue;
//Add new presentation
PowerPoint.Presentations oPresSet = objPPT.Presentations;
PowerPoint.Presentation oPres = oPresSet.Add(Office.MsoTriState.msoTrue);
//Add a slide
PowerPoint.Slides oSlides = oPres.Slides;
PowerPoint.Slide oSlide = oSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
//Add text
PowerPoint.TextRange tr = oSlide.Shapes[1].TextFrame.TextRange;
tr.Text = "Launch notepad";
tr.Select();
//Add Action settings on the shape
oSlide.Shapes[1].ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Action = PowerPoint.PpActionType.ppActionRunProgram;
oSlide.Shapes[1].ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Run = "c:\\windows\\notepad.exe";
//start slideshow
objPPT.ActivePresentation.SlideShowSettings.Run();
Это запустит слайд-шоу для презентации и будет показан 1-й слайд, "где параметры действия определены на форме". Теперь как я могу автоматически запустить notepad.exe через API? К сожалению, кодированный UI не может обнаружить объекты на слайде. Поэтому опция щелчка мышью в UI может быть невозможна.
[Редактировать] Удалось немного продвинуться вперед. Я получил объект формы во время показа слайдов. Это расширение приведенного выше кода.
PowerPoint.SlideShowWindow oSsWnd = objPPT.ActivePresentation.SlideShowWindow;
PowerPoint.Shape oShape = oSsWnd.View.Slide.Shapes[1];