判断本机office安装版本的方法分享
#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%08lx\n",
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%08lx\n",
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;
}
相关文章
- 这篇文章主要为大家详细介绍了WinForm中如何预览Office文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
- 这篇文章介绍了asp.net中调用Office来制作3D统计图的实例代码,有需要的朋友可以参考一下...2021-09-22
- 这篇文章介绍了asp.net得到本机数据库实例的两种方法代码,有需要的朋友可以参考一下...2021-09-22
详解高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
这篇文章主要介绍了详解高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二),小编觉得挺不错的,现在分享给大家,也给大家做个参考。...2021-09-22- 这篇文章主要介绍了Office 批量激活的命令工具 ospp,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-30
- 用asp.net做了一简单的游戏管理后台,涉及到了上传Excel导入数据的功能,在本地开发实现都好好的,可已上传的服务器上就悲剧了,下面有个不错的解决方法,大家可以参考下...2021-09-22
- 这篇文章主要介绍了C++获取本机MAC,IP,MASK地址的方法,主要通过IPHLPAPI.lib调用相关函数实现该功能,是非常实用的技巧,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了判断本机office安装版本的方法分享,需要的朋友可以参考下...2020-04-25
- 鉴于网上类似的详细教程真的很少,也许是问题太简单了吧。但仍然有不少网友经常会问道。所以今天我就给大家做个详细的图文介绍。希望大家能对大家有所帮助...2016-01-27
- 这篇文章主要介绍了通过openOffice将office文件转成pdf,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-17
- 本文给大家分享docker安装部署 onlyoffice的详细过程,通过图文并茂实例相结合给大家分享安装Docker Desktop及如何进入BIOS设置CPU的虚拟化,感兴趣的朋友一起看看吧...2021-06-13
- 下面小编就为大家带来一篇C++获得本机所有网卡的IP和MAC地址信息的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25