Excel2000/XP和PowerPoint2000/XP下內部COM外掛的實現 (轉)
2000/XP和2000/XP下內部COM的實現:namespace prefix = o ns = "urn:schemas--com::office" />
作者:徐景周
示例原始碼(?paper_id=735)
簡介
Excel2000和PowerPoint2000下內部COM外掛的實現這篇文章,實際上是< Office2000下內部COM外掛的程式設計實現> 和<2000/XP中內部COM外掛的程式設計實現>二篇文章的續篇。採用上篇文章< Word2000/XP中內部COM外掛的程式設計實現>中寫作風格,不再重複哆嗦大部分前面文章裡已經講過的內容了,只將重點放在它們間實現的不同點上,有興趣的朋友可以參看前面二篇文章,然後再看這篇文章及示例原始碼一定會倍感輕鬆。本文章提供的Excel2000外掛和PowerPoint2000外掛的二個示例原始碼執行後的效果圖如下所示:
具體實現
下面,讓我們來看看如何最小化修改原基礎上的原始碼來實現一個Excel2000和PowerPoint2000下COM外掛,建立工程及其它步驟可根據前面二篇文章中介紹的內容進行操作。在這裡,除了下面介紹的原始碼內容需要改動處,其它部分的原始碼內容基本上和前面我講的文章中的示例原始碼相同,一般並不需要改動(除非你有其它方面的特殊需求)。
第一點:在中Stdafx.h中的型別的匯入庫部分原始碼將有所不同,可將原始檔中原始碼替換為下面部分既可。
l Excel2000下:
/////////////////////////////////////////////////////////////////////////////////
/* 匯入工程所需Office2K及Excel2K型別庫,其*/
/* 中路徑可根據路徑自行設定, jingzhou xu */
/******************* Office 2000下匯入使用 ************************/
#import "E:Program FilesMicrosoft OfficeOfficemso9.dll" rename_namespace("Office")
using namespace Office;
#import "D:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
// Excel匯入庫
#import "E:Program FilesMicrosoft OfficeOfficeEXCEL9.olb" rename("RGB","RGBEx"),rename("DialogBox","DialogBoxEx"),named_guids,rename_namespace("MSExcel")
using namespace MSExcel;
l PowerPoint2000下:
/////////////////////////////////////////////////////////////////////////////////
/* 匯入工程所需Office2K及PowerPoint2K型別庫,其*/
/* 中路徑可根據安裝路徑自行設定, jingzhou xu */
/******************* Office 2000下匯入使用 ************************/
#import "E:Program FilesMicrosoft OfficeOfficemso9.dll" rename_namespace("Office")
using namespace Office;
#import "D:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
// PowerPoint匯入庫
#import "E:Program FilesMicrosoft OfficeOfficeMSPPT9.OLB" named_guids,rename_namespace("MSPPT")
using namespace MSPPT;
第二點:註冊型別資訊有所不同(*.rgs),將檔案rgs中內容的下半部分修改如下所示:
l Excel2000下:
HKCU
{
Software
{
Microsoft
{
Office
{
Excel
{
Addins
{
'ExcelAddin.Excel2000Addin'
{
val FriendlyName = s 'Excel20002000 Addin'
val Description = s 'Excel20002000下外掛'
val Loaehavior = d '00000003'
val CommandLineSafe = d '00000001'
}
}
}
}
}
}
}
l PowerPoint2000下:
HKCU
{
Software
{
Microsoft
{
Office
{
PowerPoint
{
Addins
{
'PPTAddin.PowerPoint2000Addin'
{
val FriendlyName = s 'PowerPoint2000 Addin'
val Description = s 'PowerPoint2000下外掛'
val LoadBehavior = d '00000003'
val CommandLineSafe = d '00000001'
}
}
}
}
}
}
}
第三點:Excel2000和PowerPoint2000中沒有ActiveExplorer,所以不必再經過它獲取Commanrs,直接從_Application中獲得CommandBars物件進行操作。修改部分如下面原始碼所示:
l Excel2000下:
// 裝缷外掛時處理
STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)
{
CComPtr < Office::_CommandBars> spCmdBars;
// Excel應用介面_Application
CComQIPtr<:_application> spApp(Application);
SERT(spApp);
// 獲取CommandBars介面
HRESULT hr = spApp->get_CommandBars(&spCmdBars);
if(FAILED(hr))
return hr;
ATLASSERT(spCmdBars);
// ……
}
l PowerPoint2000下:
// 裝缷外掛時處理
STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)
{
CComPtr < Office::_CommandBars> spCmdBars;
// Word應用介面_Application
CComQIPtr<:_application> spApp(Application);
ATLASSERT(spApp);
// 獲取CommandBars介面
HRESULT hr = spApp->get_CommandBars(&spCmdBars);
if(FAILED(hr))
return hr;
ATLASSERT(spCmdBars);
// ……
}
好了,Excel2000、PowerPoint2000、Word2000和2000下的內部COM外掛實現的不同點主要就這些了,具體實現的詳細程式碼可參看幾篇文章所附帶示例原始碼,內有詳細註釋。
參考文獻:
Office2000下內部COM外掛的程式設計實現 -- 徐景周(譯者)
Word2000/XP中內部COM外掛的程式設計實現 – 徐景周
ATL開發指南(第二版) -- Tom Armstrong & Ron Patton
聯絡方式:
地址:陝西省西安市勞動路2號院六單元
郵編:710082
編者E:
未來工作室(Future Studio)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993436/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Word2000/XP中內部COM外掛的程式設計實現 (轉)程式設計
- Office2000下內部COM外掛的程式設計實現(之二) (轉)程式設計
- XP風格復活節彩蛋的實現 (轉)
- 實踐XP
- 讓Windows 98 與Windows XP 實現互相訪問(轉)Windows
- Windows XP 系統中實現1秒關機(轉)Windows
- Windows XP掛起到硬碟後的異常故障解決(轉)Windows硬碟
- Win 2000/XP中實現硬碟效能突破的方法(轉)硬碟
- 在vb元件內呼叫excel2000實現GIF餅圖 (轉)元件Excel
- 免費的Scrum 和 XP 最佳實踐的電子書下載Scrum
- Windows XP 實用程式大總結(轉)Windows
- 使用VC++ ATL實現iStylePDF的COM外掛C++
- [前端外掛] js返回頂部 效果實現前端JS
- 三強爭霸 Ubuntu、Macintosh和Win XP(轉)UbuntuMac
- win xp安全模式解析(轉)模式
- Windows XP VS Linux (轉)WindowsLinux
- 打造極速 Windows XP(轉)Windows
- XP的DEP防毒技術揭秘(轉)防毒
- xp中的超級命令replace(轉)
- Windows XP 增強的DOS命令(轉)Windows
- 在Windows xp下安裝PyQtWindowsQT
- Extreme Programming (XP)實踐REM
- WINDOWS XP 執行命令(轉載)Windows
- Windows XP 使用及加速法(轉)Windows
- Windows XP 自行修復故障(轉)Windows
- Windows XP系統資料的備份和恢復(轉)Windows
- 在XP下設定共享資料夾的許可權(轉)
- 確保Windows XP安全的“七招”(轉)Windows
- Windows XP 輕鬆實現作業系統備份與還原(轉)Windows作業系統
- kafka的內部實現、安裝和使用Kafka
- Object.create(..)和new(..)的內部實現Object
- hp compaq 8180 elite 安裝XP
- xp系統下怎樣更改網路卡實體地址
- KVO的內部實現
- ZeroMQ 3.2.2 XP下無法執行MQ
- Windows 2000/XP 下巧拒強行關機(轉)Windows
- SQL Server 的xp_cmdshell和bcp使用SQLServer
- XP下安裝IIS6.0的辦法