手机
当前位置:查字典教程网 >编程开发 >C语言 >判断本机office安装版本的方法分享
判断本机office安装版本的方法分享
摘要:复制代码代码如下:#include"msword.h"HRESULTAutoWrap(intautoType,VARIANT*pvResul...

复制代码 代码如下:

#include "msword.h"

HRESULT AutoWrap(int autoType, VARIANT *pvResult, IDispatch *pDisp,

LPOLESTR ptName, int cArgs...)

{

// Begin variable-argument list

va_list marker;

va_start(marker, cArgs);

if (!pDisp)

{

_putws(L"NULL IDispatch passed to AutoWrap()");

_exit(0);

return E_INVALIDARG;

}

// Variables used

DISPPARAMS dp = { NULL, NULL, 0, 0 };

DISPID dispidNamed = DISPID_PROPERTYPUT;

DISPID dispID;

HRESULT hr;

// Get DISPID for name passed

hr = pDisp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID);

if (FAILED(hr))

{

wprintf(L"IDispatch::GetIDsOfNames("%s") failed w/err 0x%08lxn",

ptName, hr);

_exit(0);

return hr;

}

// Allocate memory for arguments

VARIANT *pArgs = new VARIANT[cArgs + 1];

// Extract arguments...

for(int i=0; i < cArgs; i++)

{

pArgs[i] = va_arg(marker, VARIANT);

}

// Build DISPPARAMS

dp.cArgs = cArgs;

dp.rgvarg = pArgs;

// Handle special-case for property-puts

if (autoType & DISPATCH_PROPERTYPUT)

{

dp.cNamedArgs = 1;

dp.rgdispidNamedArgs = &dispidNamed;

}

// Make the call

hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT,

autoType, &dp, pvResult, NULL, NULL);

if (FAILED(hr))

{

wprintf(L"IDispatch::Invoke("%s"=%08lx) failed w/err 0x%08lxn",

ptName, dispID, hr);

_exit(0);

return hr;

}

// End variable-argument section

va_end(marker);

delete[] pArgs;

return hr;

}

void Cwps_msword2013Dlg::OnBnClickedButton1()

{

CString strAppName = OLESTR("word.application");

bool bResult = false;

IDispatch * wordApp;

CLSID appClsid;

if(S_OK == CLSIDFromProgID(strAppName, &appClsid))

{

if(S_OK == CoCreateInstance(appClsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&wordApp))

{

Word::_Application appWord;

if(S_OK == wordApp->QueryInterface(IID_IDispatch, (void**)&appWord))

{

CString strVersion = _T("");

strVersion = appWord.GetVersion();

if(_ttoi(strVersion) >= 15.0)

{

bResult = true;

}

}

}

AutoWrap(DISPATCH_METHOD, NULL, wordApp, L"Quit", 0);

wordApp->Release();

}

if(bResult)

MessageBox(_T("ok"), _T("tip"));

else

MessageBox(_T("no"), _T("tip"));

//return bResult;

}

【判断本机office安装版本的方法分享】相关文章:

判断给定的图是不是有向无环图实例代码

解析bitmap处理海量数据及其实现方法分析

数组中求第K大数的实现方法

C++实现基数排序的方法详解

C++ explicit关键字的应用方法详细讲解

排列组合总结:将结果进行输出的实现方法

求子数组最大和的解决方法详解

C/C++指针和取地址的方法

求数组中最长递增子序列的解决方法

C++实现正态随机分布的方法

精品推荐
分类导航