判断本机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;
}

(0)

相关推荐

  • 判断本机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 I

  • windows server 2008 64位MySQL5.6免安装版本配置方法图解

    1 通过官网下载MySQL5.6版本压缩包,mysql-5.6.36-winx64.zip: 2 在D盘创建目录,比如D:\MySQL,将mysql-5.6.36-winx64.zip解压缩到该目录下,如下图所示: 3 修改系统Path变量,增加D:\MySQL\bin,如下图所示: 4 以管理员身份运行cmd,切换到D:\MySQL\bin目录, 安装服务mysqld –install 启动服务net start mysql 服务启动成功之后,通过mysql命令行登录 Mysql –u roo

  • 查看django版本的方法分享

    在cmd输入: python -m django --version 以上这篇查看django版本的方法分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • FCKeditor 2.6.6在ASP中的安装及配置方法分享

    首先从FCKEditor官方下载最新的版本我们提供的下载地址 http://www.jb51.net/codes/21294.html 安装及配置方法:一.打开文件夹发现有许多文件对于ASP来说是用不到的:删除FCKEditor2.6.6中不必要的文件:解压缩FCKeditor_2.6.6.zip到你网站根目录 fckeditor文件夹中,同时把文件夹内带_的文件夹和文件一并删除:1.fckeditor目录下除editor目录.fckconfig.js.fckeditor.asp.fckedit

  • 基于iOS pod最新的安装和使用方法(分享)

    1.安装 首先需要知道淘宝的ruby软件源不能用,现在可以用这个Ruby China 社区专注维护的这个源(https://gems.ruby-china.org/). 首先打开终端执行以下命令删除原来的ruby源: gem sources –remove https://rubygems.org/ 然后添加之前说的源 gem sources -a https://gems.ruby-china.org/ 查看新源是否替换成功 gem sources -l 然后安装pod,执行命令sudo ge

  • Java判断本机IP地址类型的方法

    复制代码 代码如下: package net; import java.net.*; /*  *  getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,  *  而getAddress方法返回的是byte数组形式的IP地址.  *  Java中byte类型的取值范围是-128?127.如果返回的IP地址的某个字节是大于127的整数,在byte数组中就是负数.  *  由于Java中没有无符号byte类型,因此,

  • Ubuntu下安装Chrome的方法分享

    在学习<Node.js实践>,没想到ubuntu12.04下的firefox竟然不支持-webkit-transition,就想安装一个chrome,发现还挺麻烦,搜索了一下,记录如下: 添加PPA 从Google Linux Repository(http://www.google.com/linuxrepositories/)下载安装Key,或把下面的代码复制进终端,回车,需要管理员密码 复制代码 代码如下: wget -q -O - https://dl-ssl.google.com/l

  • PHP中判断变量为空的几种方法分享

    1. isset功能:判断变量是否被初始化  说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过  注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右 复制代码 代码如下: $a = '';$a['c'] = '';if (!isset($a)) echo '$a 未被初始化' . "";if (!isset($b)) echo '$b 未被初始化' . "";if (isset($a['c

  • php UEditor百度编辑器安装与使用方法分享

    一.官网上下载完整源码包,解压到任意目录,解压后的源码目录结构如下所示: _examples:编辑器完整版的示例页面 _demos:编辑器的各种使用案例 dialogs:弹出对话框对应的资源和JS文件 themes:样式图片和样式文件 server:涉及到服务器端操作的PHP.JSP等文件 third-party:第三方插件 editor_all.js:_src目录下所有文件的打包文件 editor_all_min.js:editor_all.js文件的压缩版,建议在正式部署时才采用 edito

  • mysql 5.7.9 免安装版配置方法图文教程

    小编把之前整理的关于mysql 5.7.9 免安装版配置方法分享给大家,供大家参考,具体内容如下 1. 解压MySQL压缩包 将下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\mysql-5.7.9-win32" 将解压目录下默认文件 my-default.ini 拷贝一份,改名 my.ini 复制下面的配置信息到 my.ini 保存 #如果没有my-default.ini,可自己新建my.ini或者从其他地方中获取 ##########

随机推荐