From c0b0337671672252f723cee43beaebdb3bc09ddb Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Mon, 10 Jan 2011 01:05:10 +0000 Subject: [PATCH] Mitigate the following issue with the support for the Address Book of Mac OS X: if Microsoft Office is not installed or a 32-bit version of Microsoft Office is installed on 64-bit Windows and SIP Communicator, a dialog may appear to notify the SIP Communicator user that there is no default e-mail program. --- lib/native/windows-64/jmsoutlookaddrbook.dll | Bin 0 -> 25600 bytes lib/native/windows/jmsoutlookaddrbook.dll | Bin 0 -> 23040 bytes src/native/addrbook/msoutlook/Makefile | 2 +- src/native/addrbook/msoutlook/MsOutlookMAPI.h | 3 + ..._MsOutlookAddrBookContactSourceService.cxx | 130 +++++++++++++++++- .../plugin/addrbook/AddrBookActivator.java | 12 +- 6 files changed, 142 insertions(+), 5 deletions(-) create mode 100644 lib/native/windows-64/jmsoutlookaddrbook.dll create mode 100644 lib/native/windows/jmsoutlookaddrbook.dll diff --git a/lib/native/windows-64/jmsoutlookaddrbook.dll b/lib/native/windows-64/jmsoutlookaddrbook.dll new file mode 100644 index 0000000000000000000000000000000000000000..406c51d7b9e9a05facd6e40c26b875a3582fb024 GIT binary patch literal 25600 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 Rc9=VccTo11=l>rK{1*fhGdBPL literal 0 HcmV?d00001 diff --git a/lib/native/windows/jmsoutlookaddrbook.dll b/lib/native/windows/jmsoutlookaddrbook.dll new file mode 100644 index 0000000000000000000000000000000000000000..457be2e16361c24735e67e35fdb5677fff49a42b GIT binary patch literal 23040 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 #include +#define WIN32_LEAN_AND_MEAN +#include + #endif /* #ifndef _NET_JAVA_SIP_COMMUNICATOR_PLUGIN_ADDRBOOK_MSOUTLOOK_MSOUTLOOKMAPI_H_ */ diff --git a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx index f4d2f324f..14446b0aa 100644 --- a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx +++ b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx @@ -10,14 +10,138 @@ #include "MsOutlookMAPI.h" #include "MsOutlookMAPIHResultException.h" +#include +#include +#include + JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIInitialize (JNIEnv *jniEnv, jclass clazz, jlong version, jlong flags) { - MAPIINIT_0 mapiInit = { (ULONG) version, (ULONG) flags }; - HRESULT hResult; + HKEY officeKey; + HRESULT hResult = MAPI_E_NO_SUPPORT; + + /* + * In the absence of a default e-mail program, MAPIInitialize may show a + * dialog to notify of the fact. The dialog is undesirable here. Because we + * implement ContactSourceService for Microsoft Outlook, we will try to + * mitigate the problem by implementing an ad-hoc check whether Microsoft + * Outlook is installed. + */ + if (ERROR_SUCCESS + == RegOpenKeyEx( + HKEY_LOCAL_MACHINE, + _TEXT("Software\\Microsoft\\Office"), + 0, + KEY_ENUMERATE_SUB_KEYS, + &officeKey)) + { + DWORD i = 0; + TCHAR installRootKeyName[ + 255 /* The size limit of key name as documented in MSDN */ + + 20 /* \Outlook\InstallRoot */ + + 1 /* The terminating null character */ ]; + + while (1) + { + LONG regEnumKeyEx; + DWORD subkeyNameLength = 255 + 1; + LPTSTR str; + HKEY installRootKey; + DWORD pathValueType; + DWORD pathValueSize; + + regEnumKeyEx + = RegEnumKeyEx( + officeKey, + i, + installRootKeyName, &subkeyNameLength, + NULL, + NULL, NULL, + NULL); + if (ERROR_NO_MORE_ITEMS == regEnumKeyEx) + break; + + i++; + if (ERROR_SUCCESS != regEnumKeyEx) + continue; + + str = installRootKeyName + subkeyNameLength; + memcpy(str, _TEXT("\\Outlook\\InstallRoot"), 20 * sizeof(TCHAR)); + *(str + 20) = 0; + if ((ERROR_SUCCESS + == RegOpenKeyEx( + officeKey, + installRootKeyName, + 0, + KEY_QUERY_VALUE, + &installRootKey)) + && (ERROR_SUCCESS + == RegQueryValueEx( + installRootKey, + _TEXT("Path"), + NULL, + &pathValueType, + NULL, &pathValueSize)) + && (REG_SZ == pathValueType) + && pathValueSize) + { + LPTSTR pathValue; + + /* + * MSDN says "the string may not have been stored with the + * proper terminating null characters." + */ + pathValueSize + += sizeof(TCHAR) + * (12 /* \Outlook.exe */ + + 1 /* The terminating null character */); - hResult = MAPIInitialize(&mapiInit); + if (pathValueSize <= sizeof(installRootKeyName)) + pathValue = installRootKeyName; + else + { + pathValue = (TCHAR *) malloc(pathValueSize); + if (!pathValue) + continue; + } + + if (ERROR_SUCCESS + == RegQueryValueEx( + installRootKey, + _TEXT("Path"), + NULL, + NULL, + (LPBYTE) pathValue, &pathValueSize)) + { + DWORD pathValueLength = pathValueSize / sizeof(TCHAR); + + if (pathValueLength) + { + DWORD fileAttributes; + + str = pathValue + (pathValueLength - 1); + if (*str) + str++; + memcpy(str, "\\Outlook.exe", 12 * sizeof(TCHAR)); + *(str + 12) = 0; + + fileAttributes = GetFileAttributes(pathValue); + if (INVALID_FILE_ATTRIBUTES != fileAttributes) + { + MAPIINIT_0 mapiInit + = { (ULONG) version, (ULONG) flags }; + + hResult = MAPIInitialize(&mapiInit); + } + } + } + + if (pathValue != installRootKeyName) + free(pathValue); + } + } + } if (HR_FAILED(hResult)) { diff --git a/src/net/java/sip/communicator/plugin/addrbook/AddrBookActivator.java b/src/net/java/sip/communicator/plugin/addrbook/AddrBookActivator.java index ceeeb1cdf..86ad3ee09 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/AddrBookActivator.java +++ b/src/net/java/sip/communicator/plugin/addrbook/AddrBookActivator.java @@ -69,7 +69,17 @@ else if (OSUtils.IS_MAC) else return; - css = (ContactSourceService) Class.forName(cssClassName).newInstance(); + try + { + css + = (ContactSourceService) + Class.forName(cssClassName).newInstance(); + } + catch (Exception ex) + { + logger.error("Failed to instantiate " + cssClassName, ex); + return; + } try { cssServiceRegistration