애드인에서 슬라이드쇼중에 마우스클릭 이벤트를 받아서 애드인코드를 실행할 수 있는 방법
// 이미지를 슬라이드에 추가
PowerPont.Shape sh = s.Shapes.AddPicture("C:\\Projects\\Addin\\data\\pie_chart.png",
Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue,
320, 240);
// 매크로 실행
sh.ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Run = "ShowForm";
위코드에서 ShowForm은 오피스개발도구를 활성화하여 매크로를 편집하여 만든 매크로 함수다.
아래 예는 폼을 하나 띄우는 매크로이다.
Sub ShowForm()
UserForm1.Show
End Sub
// 브라우져 실행
sh.ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Action = PowerPoint.PpActionType.ppActionHyperlink;
sh.ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Hyperlink.Address = "http://www.daum..com";
// 프로그램 실행
sh.ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Action = PowerPoint.PpActionType.ppActionRunProgram;
sh.ActionSettings[PowerPoint.PpMouseActivation.ppMouseClick].Run = @"Notepad.exe";
내가 내린 결론
* AddIn client에 직접 확인할 방법은 없으며 메세지를 전달할 중간 통로를 마련하여 해당 통로를 통해서 전달받아야 함.
* 중간 통로는 서버 또는 파일등을 이용하는 방법이 있을것같다. 서버와 커넥션을 유지하는 애드인이라면 서버에 전송하면 서버가 애드인에 ack를 날리는 식으로 하면 애드인이 인식할 테니깐. 파일은 좀..... 문제가 있는 방법이기는 하나 공유메모리나 다른 더 좋은 기술을 사용해도 되겠지만 짧은 생각에 쉽게 개발할 수 있는 방법은 파일에 정보를 기입하고 애드인은 그 파일을 모니터링하는 방법이 있을 것 같다.
혹... 더 좋은 방법 아시는 분!!!! 정보 공유좀!
참고
PpActionType의 종류는 아래 참조.
Name |
Value |
Description |
ppActionEndShow |
6 |
Slide show ends. |
ppActionFirstSlide |
3 |
Returns to the first slide. |
ppActionHyperlink |
7 |
Hyperlink. |
ppActionLastSlide |
4 |
Moves to the last slide. |
ppActionLastSlideViewed |
5 |
Moves to the last slide viewed. |
ppActionMixed |
-2 |
Performs a mixed action. |
ppActionNamedSlideShow |
10 |
Runs the slideshow. |
ppActionNextSlide |
1 |
Moves to the next slide. |
ppActionNone |
0 |
No action is performed. |
ppActionOLEVerb |
11 |
OLE Verb. |
ppActionPlay |
12 |
Begins the slideshow. |
ppActionPreviousSlide |
2 |
Moves to the previous slide. |
ppActionRunMacro |
8 |
Runs a macro. |
ppActionRunProgram |
9 |
Runs a program. |