獲取本機通訊薄的內容

2021-07-14 08:46:54 字數 1838 閱讀 4880

獲取本機通訊薄的內容

編譯:徐景周

簡介

如果你想獲取本機通訊簿(outlook express和outlook2000)的內容,如:聯絡人名字、聯絡人郵件位址等時,可以試試下面的方法。下面是把此方法用vc6編寫的示例程式執行效果:

由於讀取outlook express(系統自帶)和outlook2000(office2000中所帶)中通訊薄內容所採取的方法不同,下面將分開簡述。

一、讀取系統自帶outlook express中通訊薄方法

基本思路

通重載入wab32.dll檔案(此檔案一般位於路徑「《碟符》\program files\common files\system\」下面),再獲取其內部涵數wabopen的程序位址加以呼叫,來讀出通訊薄中主要內容。

具體實現

#include // 通訊薄標頭檔案

// 內部函式宣告

typedef hresult (winapi *fwabopen)(lpadrbook*,lpwabobject*,lpwab_param,dword);

// 讀取通訊薄內容(型別、呢稱、名字、email)

void cgetemaildlg::onok()

m_listemail.addstring(strtemp);

lpwabobject->freebuffer(lprow);

}lpwabobject->freebuffer(lprows);

}} freelibrary(hinstlib);

// 讀取成功後,置讀取按鈕無效

cbutton* pbtn = (cbutton*)getdlgitem(idok);

pbtn->enablewindow(false);

}}

附註:在包含進標頭檔案wab.h進行編釋時,有時會在wabtags.h等地方編釋不通,可按示例原始碼中所帶wabtags.h檔案加以修改,主要是原安裝檔案的內容有部分損壞。 

二、讀取office2000中所帶outlook2k中通訊薄方法

基本思路

由於outlook2000下支援內部com介面,可以利用此介面來讀取其內部通訊薄中主要內容。

具體實現

// 匯入讀取outlook2000中通訊薄內容所需庫

#import "e:\program files\microsoft office\office\mso9.dll" named_guids

#import "e:\program files\microsoft office\office\msoutl9.olb" \

no_namespace exclude("_irecipientcontrol", "_drecipientcontrol")

_itemsptr pitems;

mapifolderptr pfolder;

_contactitemptr pcontact;

hresult hr;

try // 獲取預設outlook中聯絡人資料夾

if (pfolder==null)

else // 否則自行選擇outlook中一指定資料夾 }

pitems=pfolder->getitems();

if (pitems==null)

pcontact=pitems->getfirst();

m_listemail.resetcontent();

while(1) }

catch(_com_error &e)

獲取本機通訊薄的內容

第 一 讀取系統自帶outlook express中通訊薄方法 基本思路 通重載入wab32.dll檔案 此檔案一般位於路徑 碟符 program files common files system 下面 再獲取其內部涵數wabopen的程序位址加以呼叫,來讀出通訊薄中主要內容。具體實現 一 包含通...

QT 網路通訊篇 獲取本機資訊

今天carry對qt網路通訊的http有了一定的理解,可能了解的非常基礎,希望大家多提點意見哈!qt中的網路程式設計是由qt network提供的,它提供了許多類來實現網路應用中的各種功能,下面簡單實現一下獲取本機資訊 1,在ui介面新增如圖控制項 2,在.pro工程檔案中新增 qt network...

獲取本機的位址

剛學網路程式設計,試著做了乙個獲取本機的名及位址的方法,開始怎麼也獲取的不對,原來錯誤在這裡 i longint pointer p h addr list 這句開始少了 pointer 了,因為 h addr list 本來就是乙個指標 pchar,所以取得了這個指標的值後再去獲取這個指標所指向的...