有關OLE物件的使用(1)

2021-04-01 20:28:03 字數 1778 閱讀 8061

一、理論基礎:

建立com元件有如下兩種方式。

1。在開發過程中,客戶程式通常都是通過cocreateinstance()建立com物件,但這樣建立方式,客戶必須知道該com元件的clsid或progid。com庫通過id在登錄檔中找到com,並載入。通過指標陣列呼叫其內的函式。

2。另一種建立方式,就是通過名字物件(moniker)建立com物件。名字技術允許客戶程式通過符號化的方式建立com物件,不必須再通過clsid或progid,大大降低了系統的偶合性。

下面對第二種方式進行簡單說明:

名字物件,其本身也是乙個com物件,它對通常的com元件物件提供了符號化的表示方法,同時它對com元件物件進行了全面的封裝。客戶只需建立相應的名字物件,然後利用名字物件的繫結功能得到元件物件。名字物件實現了標準的介面imoniker,客戶程式通過imoniker介面獲得元件物件。

例如在客戶文件中插入乙個電子**檔案:「c:/my document / my.xls」,其處理過程如下:

1。客戶程式首先呼叫createfilemoniker  api 函式建立乙個檔案名字物件,

2。呼叫名字物件的imoniker::bindtoobject()函式,繫結到excle.exe,在後台執行,並載入"c:/my document / my.xls",其繫結的詳細過程如下:

2。1通過getclassfile找到與該電子**檔案相聯絡的元件物件clsid

2。1。1clsid一般儲存在檔案中,直接從檔案讀取即可

2。1。2clsid,也通過該電子**檔案的副檔名「。xls」,到登錄檔中查詢相應的clsid

2。2找到clsid,後再呼叫cocreateinstance()元件物件

2。3請求元件的ipersistfile指標,然後呼叫ipersistfile::load(strfilename)載入電子**檔案。

2。4bindtoobject返回

二、在mfc中的實際

應用在mfc中,利用coleclientitem類,將其載入過程封裝掩蓋起來了。所以,即使你不懂名字物件技術,也不會影響你使用ole物件。

cview::oninsertobject()

coleinsertdialog dlg ;                   //啟動ole插入對話方塊

if (dlg.domodal() != idok)

return;

beginwaitcursor();

colecntritem* pitem = null;

try{

// create new item connected to this document.

coledoc* pdoc = getdocument();//獲得容器指標

assert_valid(pdoc);

pitem = new colecntritem(pdoc);//建立ole物件

assert_valid(pitem);

// initialize the item from the dialog data.

if (!dlg.createitem(pitem))                 //裝載所嵌入的文件

afxthrowmemoryexception();  // any exception will do

assert_valid(pitem);

if (dlg.getselectiontype() == coleinsertdialog::createnewitem)

pitem->doverb(oleiverb_show, this);//啟用

略。。。。

C 操作Access的Ole物件

ole物件資料型別 1 ole 物件用於使用 ole 協議在其他程式中建立的 ole 物件,如 microsoft word 文件 microsoft excel 電子 聲音或其他二進位制資料。2 access中的ole物件對應到c 中的資料型別是二進位制的byte陣列,對應到oledbtype.b...

有關vim的使用

重點內容 vi編輯器有三種模式 命令模式,編輯模式,末行模式 開啟vi後首先是命令模式,用i,o,a等進入編輯模式,按esc退出編輯模式。w 儲存檔案但不退出vi w file 將修改另外儲存到file中,不退出vi w 強制儲存,不推出vi wq 儲存檔案並退出vi wq 強制儲存檔案,並退出vi...

有關sqlmap的使用

首先貼一段詳細引數說明,相當於說明書了 sqlmap詳細命令 options 選項 target 目標 以下至少需要設定其中乙個選項,設定目標url。request 請求 這些選項可以用來指定如何連線到目標url。enumeration 列舉 這些選項可以用來列舉後端資料庫管理系統的資訊 表中的結構...