Sorry about the 'usual' - my mistake. Here is precisely
what I want to do. I want to modify Michael Spahn's
global module (below) enabling it to extract the WAB
file [business address | city | state | zip] fields. Trouble
is - I don't know anything about useOEWAB.dll
I thought lines like
Private Declare Function oe_getWABAddress Lib "useOEWAB.dll" Alias
"getWABAddress" (ByVal idx As Long, ByVal strBuffer As String) As Long
Private Declare Function oe_getWABPhone Lib "useOEWAB.dll" Alias
"getWABPhone" (ByVal idx As Long, ByVal strBuffer As String) As Long
Private Declare Function oe_getWABZipCode Lib "useOEWAB.dll" Alias
"getWABZipCode" (ByVal idx As Long, ByVal strBuffer As String) As Long
would likely be supported - in the useOEWAB library - I just don't
know.
Michael's complete OEKontakteDemo.zip (178 KB) file can be found at
http://www.spahn-web.de/sonstiges/oekontaktedemo/
Option Compare Database
Option Explicit
'
+-------------------------------------------------------------------------------
' | Zugriff auf "Address Book"-Kontakte von "Outlook Express" via
API-Calls
'
+-------------------------------------------------------------------------------
' |
' | Für den Zugriff auf die Outlook-Express-Kontakte wird die eine
zusätzliche
' | DLL-Datei benötigt:
' |
' | - Die DLL-Datei "useOEWAB.dll" muß gefunden werden, d.h. daß sie
' | nötigenfalls in den Pfad gesetzt oder in das Windows-System-
' | Verzeichnis kopiert werden muß.
' |
'
+-------------------------------------------------------------------------------
' |
' | Hinter der hier verwendeten DLL und dieser Demo-Datenbank stand
nicht die
' | Intension alle Funktionen des Adressbuches zu kapseln, sondern auf
ein paar
' | wenige Felder des Standard-Adressbuches möglichst simpel
zuzugreifen.
' |
' | Prinzipiell könnte man die DLL um Zugriffsmöglichkeiten für alle
Felder des
' | Adressbuches erweitern, sowie schreibende Zugriffe und das Löschen
und Neu-
' | anlegen von Kontakten.
' |
' | Aber da ich eben nur einige wenige Funktionalitäten benötigt habe,
habe ich
' | es auch dabei belassen. :-)
' |
' | Die DLL entstand sozusagen nur aus der Notwendigkeit heraus, daß
Outlook-
' | Express im Gegensatz zu Outlook keine Automation unterstützt. :-(
' |
'
+-------------------------------------------------------------------------------
' |
' | Diese Access97-Demo-Datenbank, der darin enthaltene Code sowie die
DLL-Datei
' | "useOEWAB.dll" dürfen frei weitergegeben werden, solange keine der
' | Dateien verändert und/oder der Copyright-Hinweis entfernt wird.
' |
' | Eine Nutzung des Codes in eigenen Programmen ist gestattet,
solange Module
' | vollständig(!) und unverändert(!) übernommen werden und somit auch
der
' | Copyright-Hinweis unverändert bestehen bleibt.
' |
' | Michael Spahn,
' |
sp***@michael-spahn.de
' |
'
+-------------------------------------------------------------------------------
' | (C) 01.03.2002, Michael Spahn
'
+-------------------------------------------------------------------------------
'DLL-Deklarationen:
'------------------
Private Declare Function oe_initWAB Lib "useOEWAB.dll" Alias
"initUseOfWAB" () As Long
Private Declare Sub oe_endWAB Lib "useOEWAB.dll" Alias
"endUseOfWAB" ()
Private Declare Function oe_getWABDLLInfo Lib "useOEWAB.dll" Alias
"getWABDLLInfo" (ByVal strBuffer As String) As Long
Private Declare Function oe_getWABStdFile Lib "useOEWAB.dll" Alias
"getWABStdFile" (ByVal strBuffer As String) As Long
Private Declare Function oe_getWABCount Lib "useOEWAB.dll" Alias
"getWABCount" () As Long
Private Declare Function oe_getWABName Lib "useOEWAB.dll" Alias
"getWABName" (ByVal idx As Long, ByVal strBuffer As String) As Long
Private Declare Function oe_getWABEMail Lib "useOEWAB.dll" Alias
"getWABEMail" (ByVal idx As Long, ByVal strBuffer As String) As Long
Private Declare Function oe_getWABHomepage Lib "useOEWAB.dll"
Alias "getWABHomepage" (ByVal idx As Long, ByVal strBuffer As String)
As Long
Public Function initWAB() As Boolean
'--------------------------------------------------------------------------------
' Initialisierung der DLL, Öffnen des Standard-Adressbuches.
' Gibt true zurück, falls erfolgreich, sonst false.
'
' Anmerkung: Falls eine Initialisierung bereits erfolgreich
stattgefunden hat, so
' gelingt keine weitere Initialisierung bevor nicht mit endWAB das
Standard-
' Adressbuch wieder geschlossen wurde.
'
' Returncodes von "oe_initWAB":
' 0 = Standard-Adressbuch neu geöffnet
' -1 = Standard-Adressbuch ist bereits geöffnet
'--------------------------------------------------------------------------------
Dim intResult As Long
intResult = oe_initWAB()
If intResult = 0 Then
initWAB = True
Else
initWAB = False
End If
End Function
Public Sub endWAB()
'--------------------------------------------------------------------------------
' Schliessen des Standard-Adressbuches, freigeben von Ressourcen
'--------------------------------------------------------------------------------
Call oe_endWAB
End Sub
Public Function getWABDLLInfo() As String
'--------------------------------------------------------------------------------
' About-Information der DLL zurückgeben.
' Gut um zu testen, ob der DLL-Zugriff überhaupt funktioniert,
' da hier keine WAB-Funktionen aufgerufen werden.
'--------------------------------------------------------------------------------
Dim strResult As String
Dim intLaenge As Long
strResult = String$(255, 0)
intLaenge = oe_getWABDLLInfo(strResult)
getWABDLLInfo = Left$(strResult, intLaenge)
End Function
Public Function getWABStdFile() As String
'--------------------------------------------------------------------------------
' Gebe den Dateinamen des geöffneten Standard-Adressbuches zurück.
Dies ist
' eine zusätzliche Angabe, die zum Öffnen des
Standard-Adressbuches nicht
' nötig ist, jedoch evtl. in der Registry an folgender Position
gewonnen
' werden kann:
'
' "HKEY_CURRENT_USER\Software\Microsoft\WAB\WAB4 \Wab File Name"
'
' Wird dort keine Angabe gemacht, so kann zwar das
Standard-Adressbuch
' über die API geöffnet werden, aber es ist nicht bekannt, welche
Datei
' dabei geöffnet wird.
'
' Voraussetzung: WAB wurde zuvor erfolgreich initialisiert (siehe
"initWAB")
'--------------------------------------------------------------------------------
Dim strResult As String
Dim intLaenge As Long
strResult = String$(255, 0)
intLaenge = oe_getWABStdFile(strResult)
If intLaenge > 0 Then
getWABStdFile = Left$(strResult, intLaenge)
Else
getWABStdFile = ""
End If
End Function
Public Function getWABCount() As Long
'--------------------------------------------------------------------------------
' Gibt die Anzahl der Einträge im Standard-Adressbuch zurück. Wird
-1 zurück-
' geliefert, so ist momentan kein Adressbuch geöffnet. Man
beachte, daß der
' höchste Index, den man für Zugriffe auf das Standard-Adressbuch
verwenden
' kann die Anzahl der Einträge - 1 ist, da der Index bei 0
beginnt.
'
' Voraussetzung: WAB wurde zuvor erfolgreich initialisiert (siehe
"initWAB")
'--------------------------------------------------------------------------------
Dim intLaenge As Long
intLaenge = oe_getWABCount()
getWABCount = intLaenge
End Function
Public Function getWABName(idx As Long) As String
'--------------------------------------------------------------------------------
' Gebe den Namen des Eintrages mit Index idx zurück.
' Wird der höchste zulässige Index (siehe getWABCount)
überschritten,
' so wird eine leere Zeichenfolge geliefert. Liegt der Index im
erlaubten
' Bereich und wird trotzdem eine leere Zeichenfolge geliefert, so
ist die
' gewünschte Information in dem Eintrag mit dem Index wirklich
nicht vorhanden.
'
' Voraussetzung: WAB wurde zuvor erfolgreich initialisiert (siehe
"initWAB")
'--------------------------------------------------------------------------------
Dim strResult As String
Dim intLaenge As Long
strResult = String$(255, 0)
intLaenge = oe_getWABName(idx, strResult)
If intLaenge > 0 Then
getWABName = Left$(strResult, intLaenge)
Else
getWABName = ""
End If
End Function
Public Function getWABEMail(idx As Long) As String
'--------------------------------------------------------------------------------
' Gebe die E-Mail-Adresse des Eintrages mit Index idx zurück.
' Wird der höchste zulässige Index (siehe getWABCount)
überschritten,
' so wird eine leere Zeichenfolge geliefert. Liegt der Index im
erlaubten
' Bereich und wird trotzdem eine leere Zeichenfolge geliefert, so
ist die
' gewünschte Information in dem Eintrag mit dem Index wirklich
nicht vorhanden.
'
' Voraussetzung: WAB wurde zuvor erfolgreich initialisiert (siehe
"initWAB")
'--------------------------------------------------------------------------------
Dim strResult As String
Dim intLaenge As Long
strResult = String$(255, 0)
intLaenge = oe_getWABEMail(idx, strResult)
If intLaenge > 0 Then
getWABEMail = Left$(strResult, intLaenge)
Else
getWABEMail = ""
End If
End Function
Public Function getWABHomepage(idx As Long) As String
'--------------------------------------------------------------------------------
' Gebe die Homepage-Adresse des Eintrages mit Index idx zurück.
' Wird der höchste zulässige Index (siehe getWABCount)
überschritten,
' so wird eine leere Zeichenfolge geliefert. Liegt der Index im
erlaubten
' Bereich und wird trotzdem eine leere Zeichenfolge geliefert, so
ist die
' gewünschte Information in dem Eintrag mit dem Index wirklich
nicht vorhanden.
'
' Voraussetzung: WAB wurde zuvor erfolgreich initialisiert (siehe
"initWAB")
'--------------------------------------------------------------------------------
Dim strResult As String
Dim intLaenge As Long
strResult = String$(255, 0)
intLaenge = oe_getWABHomepage(idx, strResult)
If intLaenge > 0 Then
getWABHomepage = Left$(strResult, intLaenge)
Else
getWABHomepage = ""
End If
End Function