判斷本機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;
}
欄 目:C語言
下一篇:用while判斷輸入的數(shù)字是否回文數(shù)的簡單實現(xiàn)
本文標題:判斷本機office安裝版本的方法分享
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3790.html
您可能感興趣的文章
- 01-10如何判斷一個數(shù)是否為2的冪次方?若是,并判斷出來是多少次方
- 01-10如何判斷一個數(shù)是否為4的冪次方?若是,并判斷出來是多少次方
- 01-10linux c 獲取本機公網(wǎng)IP的實現(xiàn)方法
- 01-10如何判斷一個整數(shù)的二進制中有多少個1
- 01-10判斷整數(shù)序列是否為二元查找樹的后序遍歷結果的解決方法
- 01-10C語言中判斷int,long型等變量是否賦值的方法詳解
- 01-10C/C++中如何判斷某一文件或目錄是否存在
- 01-10C語言小程序 如何判斷三角型類型
- 01-10C語言小程序 如何判斷兩個日期之差
- 01-10c語言常見圖片格式判斷實例


閱讀排行
本欄相關
- 04-02c語言函數(shù)調用后清空內存 c語言調用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求
隨機閱讀
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置


