64,636
社区成员
发帖
与我相关
我的任务
分享
COleDispatchDriver app = NULL; // app is the PowerPoint _Application object
COleDispatchDriver Presentation = NULL;
if (Init())
{
New( GetSafeHwnd() );
Open(_T("D:\\1.ppt"));
Exit();
}
BOOL Init()
{
// Start PowerPoint and get Application object...
return app.CreateDispatch(_T("Powerpoint.Application"));
}
void New(HWND hParent)
{
// Make PowerPoint visible and display a message
long nNewValue = TRUE;
static BYTE parms[] = VTS_I4 ;
app.InvokeHelper(0x7ee, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue);
TRACE("PowerPoint is Running!\n");
if (NULL == hParent)
return;
CString result;
app.InvokeHelper(0x7d9, DISPATCH_PROPERTYGET, VT_BSTR, (void *)&result, NULL);
hPPTWnd = ::FindWindow(NULL, result);
if (NULL == hPPTWnd)
return;
SetWindowLong(hPPTWnd, GWL_STYLE, GetWindowLong(hPPTWnd, GWL_STYLE)-WS_POPUP+WS_CHILD-WS_CAPTION-WS_BORDER-WS_THICKFRAME);
::SetParent(hPPTWnd, hParent);
}
void Open(LPCTSTR sFileName)
{
app.InvokeHelper(0x7d1, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&Presentations, NULL);
long ReadOnly = 0;
long Untitled = 0;
long WithWindow = 1;
CString strFileName;
strFileName.Format(_T("%s"), sFileName);
static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_I4 ;
Presentations.InvokeHelper(0x7d5, DISPATCH_METHOD, VT_DISPATCH, (void*)&Presentation, parms, strFileName, ReadOnly, Untitled, WithWindow);
}
LPCTSTR GetCaption()
{
CString result;
app.InvokeHelper(0x7d9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void Move(float left, float top, float width, float height)
{
static BYTE parms[] = VTS_R4 ;
// left
app.InvokeHelper(0x7e9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, left);
// top
app.InvokeHelper(0x7ea, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, top);
// width
app.InvokeHelper(0x7eb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, width);
// height
app.InvokeHelper(0x7ec, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, height);
}
void Exit()
{
app.InvokeHelper(0x7e5, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
Presentations.ReleaseDispatch();
Presentation.ReleaseDispatch();
app.ReleaseDispatch();
}
// 使用例子:
CoInitialize(NULL);
if (Init())
{
New( GetSafeHwnd() );
}
Open(_T("D:\\1.ppt"));
Exit();
void __fastcall TForm3::Button1Click(TObject *Sender) {
Variant vPowerPoint;
try {
vPowerPoint = CreateOleObject("PowerPoint.Application");
}
catch (...) {
ShowMessage("Error...");
}
// 使 Powerpoint 界面可视
vPowerPoint.OlePropertySet("Visible", true);
// 打开一个剪辑
String strPptFile = "C:\\Users\\Administrator\\Desktop\\test\\xxf.ppt";
// 换成你的PPT文件名
vPowerPoint.OlePropertyGet("Presentations").OleFunction("Open",
strPptFile.c_str(), false, false, true);
// 得到幻灯片总数
int nSlidecounts = vPowerPoint.OlePropertyGet("ActivePresentation")
.OlePropertyGet("Slides").OlePropertyGet("Count");
// 放映这个剪辑
vPowerPoint.OlePropertyGet("ActivePresentation").OlePropertyGet
("SlideShowSettings").OleFunction("Run");
//放映下一张幻灯片
Variant vSlideShowWin = vPowerPoint.OlePropertyGet("ActivePresentation").OlePropertyGet("SlideShowWindow");
vSlideShowWin.OlePropertyGet("View").OleFunction("Next");
//跳到第二页
vSlideShowWin.OlePropertyGet("View").OleFunction("GoToSlide",2);
//返回上一页
vSlideShowWin.OlePropertyGet("View").OleFunction("Previous");
//跳到最后一页
vSlideShowWin.OlePropertyGet("View").OleFunction("Last");
vPowerPoint.OleProcedure("Quit");
vPowerPoint = Unassigned;
}