I am automating a Powerpoint scenario using Coded UI & VSTO. In my powerpoint presentation I have created an 'Action' setting on a shape to launch notepad. During slideshow I need to invoke this action by clicking on the 'text/shape' so that it will open notepad.exe. Could anyone help me how to achieve this. I wrote the following code.
//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();
This will launch the slideshow for the presentation and the 1st slide 'where the action settings are defined on the shape' will be displayed. Now how can I launch notepad.exe automatically thru APIs? unfortunately coded UI cannot detect objects in a slide. So a UI mouse click option may not be possible.
[Edit] Able to make little bit progress. I have got shape object during slide show. This is extension to the above code.
PowerPoint.SlideShowWindow oSsWnd = objPPT.ActivePresentation.SlideShowWindow;
PowerPoint.Shape oShape = oSsWnd.View.Slide.Shapes[1];
Shell(ActionSettings[Click].Run)
if Action = ppActionRunProgram – Paul B.