From 9fe1610ef8beda4d5812e6db22a7bd718bff77ec Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Fri, 14 Jan 2011 18:48:43 +0000 Subject: [PATCH] Searches through the contacts of Microsoft Outlook only if it is the default mail client (in order to prevent a notification dialog displayed by Microsoft Outlook). --- lib/native/windows-64/jmsoutlookaddrbook.dll | Bin 25600 -> 26112 bytes lib/native/windows/jmsoutlookaddrbook.dll | Bin 16896 -> 16896 bytes src/native/addrbook/msoutlook/MsOutlookMAPI.h | 12 +- ..._MsOutlookAddrBookContactSourceService.cxx | 173 ++++++++++++++---- 4 files changed, 145 insertions(+), 40 deletions(-) diff --git a/lib/native/windows-64/jmsoutlookaddrbook.dll b/lib/native/windows-64/jmsoutlookaddrbook.dll index a5857f7aa18c952e3bfb08c824f1121fe98a3de1..a5755940ce0cbdc23c719b3659acf3f6cdb9a1bd 100644 GIT binary patch delta 4817 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 DN1?ab delta 4276 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 CTz5edb$=V!;CL@0n^Lucceq_=?X!7t(c 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 ZvKdaT;W#xAO@eER-;a^u)msKd{y#HXxB>tG diff --git a/src/native/addrbook/msoutlook/MsOutlookMAPI.h b/src/native/addrbook/msoutlook/MsOutlookMAPI.h index 33f57476f..f928330b6 100644 --- a/src/native/addrbook/msoutlook/MsOutlookMAPI.h +++ b/src/native/addrbook/msoutlook/MsOutlookMAPI.h @@ -21,15 +21,15 @@ #include #include -SCODE MsOutlookAddrBook_MAPIAllocateBuffer(ULONG size, LPVOID FAR *buffer); -#define MAPIAllocateBuffer MsOutlookAddrBook_MAPIAllocateBuffer -ULONG MsOutlookAddrBook_MAPIFreeBuffer(LPVOID buffer); -#define MAPIFreeBuffer MsOutlookAddrBook_MAPIFreeBuffer -HRESULT MsOutlookAddrBook_MAPILogonEx +SCODE MsOutlookAddrBook_mapiAllocateBuffer(ULONG size, LPVOID FAR *buffer); +#define MAPIAllocateBuffer MsOutlookAddrBook_mapiAllocateBuffer +ULONG MsOutlookAddrBook_mapiFreeBuffer(LPVOID buffer); +#define MAPIFreeBuffer MsOutlookAddrBook_mapiFreeBuffer +HRESULT MsOutlookAddrBook_mapiLogonEx (ULONG_PTR uiParam, LPSTR profileName, LPSTR password, FLAGS flags, LPMAPISESSION FAR *mapiSession); -#define MAPILogonEx MsOutlookAddrBook_MAPILogonEx +#define MAPILogonEx MsOutlookAddrBook_mapiLogonEx #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 88282c005..20f9a3c6c 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 @@ -15,18 +15,18 @@ #include static LPMAPIALLOCATEBUFFER - MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer; -static LPMAPIFREEBUFFER MsOutlookAddrBookContactSourceService_MAPIFreeBuffer; -static LPMAPIINITIALIZE MsOutlookAddrBookContactSourceService_MAPIInitialize; -static LPMAPILOGONEX MsOutlookAddrBookContactSourceService_MAPILogonEx; + MsOutlookAddrBookContactSourceService_mapiAllocateBuffer; +static LPMAPIFREEBUFFER MsOutlookAddrBookContactSourceService_mapiFreeBuffer; +static LPMAPIINITIALIZE MsOutlookAddrBookContactSourceService_mapiInitialize; +static LPMAPILOGONEX MsOutlookAddrBookContactSourceService_mapiLogonEx; static LPMAPIUNINITIALIZE - MsOutlookAddrBookContactSourceService_MAPIUninitialize; + MsOutlookAddrBookContactSourceService_mapiUninitialize; JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIInitialize (JNIEnv *jniEnv, jclass clazz, jlong version, jlong flags) { - HKEY officeKey; + HKEY regKey; HRESULT hResult = MAPI_E_NO_SUPPORT; /* @@ -42,7 +42,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac _T("Software\\Microsoft\\Office"), 0, KEY_ENUMERATE_SUB_KEYS, - &officeKey)) + ®Key)) { DWORD i = 0; TCHAR installRootKeyName[ @@ -61,7 +61,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac regEnumKeyEx = RegEnumKeyEx( - officeKey, + regKey, i, installRootKeyName, &subkeyNameLength, NULL, @@ -79,7 +79,7 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac *(str + 20) = 0; if (ERROR_SUCCESS == RegOpenKeyEx( - officeKey, + regKey, installRootKeyName, 0, KEY_QUERY_VALUE, @@ -147,7 +147,114 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac RegCloseKey(installRootKey); } } - RegCloseKey(officeKey); + RegCloseKey(regKey); + + /* + * Make sure that Microsoft Outlook is the default mail client in order + * to prevent its dialog in the case of it not being the default mail + * client. + */ + if (HR_SUCCEEDED(hResult)) + { + DWORD defaultValueType; + /* + * The buffer installRootKeyName is long enough to receive + * "Microsoft Outlook" so use it in order to not have to allocate + * more memory. + */ + LPTSTR defaultValue = (LPTSTR) installRootKeyName; + DWORD defaultValueCapacity = sizeof(installRootKeyName); + jboolean checkHKeyLocalMachine; + + hResult = MAPI_E_NO_SUPPORT; + if (ERROR_SUCCESS + == RegOpenKeyEx( + HKEY_CURRENT_USER, + _T("Software\\Clients\\Mail"), + 0, + KEY_QUERY_VALUE, + ®Key)) + { + DWORD defaultValueSize = defaultValueCapacity; + LONG regQueryValueEx + = RegQueryValueEx( + regKey, + NULL, + NULL, + &defaultValueType, + (LPBYTE) defaultValue, &defaultValueSize); + + switch (regQueryValueEx) + { + case ERROR_SUCCESS: + { + if (REG_SZ == defaultValueType) + { + DWORD defaultValueLength + = defaultValueSize / sizeof(TCHAR); + + if ((0 == defaultValueLength) || (0 == defaultValue[0])) + checkHKeyLocalMachine = JNI_TRUE; + else + { + checkHKeyLocalMachine = JNI_FALSE; + if (_tcsnicmp( + _T("Microsoft Outlook"), defaultValue, + defaultValueLength) + == 0) + hResult = S_OK; + } + } + else + checkHKeyLocalMachine = JNI_FALSE; + break; + } + case ERROR_FILE_NOT_FOUND: + checkHKeyLocalMachine = JNI_TRUE; + break; + case ERROR_MORE_DATA: + checkHKeyLocalMachine = JNI_FALSE; + break; + default: + checkHKeyLocalMachine = JNI_FALSE; + break; + } + RegCloseKey(regKey); + } + else + checkHKeyLocalMachine = JNI_TRUE; + if ((JNI_TRUE == checkHKeyLocalMachine) + && (ERROR_SUCCESS + == RegOpenKeyEx( + HKEY_LOCAL_MACHINE, + _T("Software\\Clients\\Mail"), + 0, + KEY_QUERY_VALUE, + ®Key))) + { + DWORD defaultValueSize = defaultValueCapacity; + LONG regQueryValueEx + = RegQueryValueEx( + regKey, + NULL, + NULL, + &defaultValueType, + (LPBYTE) defaultValue, &defaultValueSize); + + if ((ERROR_SUCCESS == regQueryValueEx) + && (REG_SZ == defaultValueType)) + { + DWORD defaultValueLength = defaultValueSize / sizeof(TCHAR); + + if (_tcsnicmp( + _T("Microsoft Outlook"), defaultValue, + defaultValueLength) + == 0) + hResult = S_OK; + } + RegCloseKey(regKey); + } + } } /* If we've determined that we'd like to go on with MAPI, try to load it. */ @@ -155,42 +262,40 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac { HMODULE lib = LoadLibrary(_T("mapi32.dll")); + hResult = MAPI_E_NO_SUPPORT; if (lib) { - MsOutlookAddrBookContactSourceService_MAPIInitialize + MsOutlookAddrBookContactSourceService_mapiInitialize = (LPMAPIINITIALIZE) GetProcAddress(lib, "MAPIInitialize"); - MsOutlookAddrBookContactSourceService_MAPIUninitialize + MsOutlookAddrBookContactSourceService_mapiUninitialize = (LPMAPIUNINITIALIZE) GetProcAddress(lib, "MAPIUninitialize"); - if (MsOutlookAddrBookContactSourceService_MAPIInitialize - && MsOutlookAddrBookContactSourceService_MAPIUninitialize) + if (MsOutlookAddrBookContactSourceService_mapiInitialize + && MsOutlookAddrBookContactSourceService_mapiUninitialize) { MAPIINIT_0 mapiInit = { (ULONG) version, (ULONG) flags }; hResult - = MsOutlookAddrBookContactSourceService_MAPIInitialize( + = MsOutlookAddrBookContactSourceService_mapiInitialize( &mapiInit); if (HR_SUCCEEDED(hResult)) { - MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer + MsOutlookAddrBookContactSourceService_mapiAllocateBuffer = (LPMAPIALLOCATEBUFFER) GetProcAddress(lib, "MAPIAllocateBuffer"); - MsOutlookAddrBookContactSourceService_MAPIFreeBuffer + MsOutlookAddrBookContactSourceService_mapiFreeBuffer = (LPMAPIFREEBUFFER) GetProcAddress(lib, "MAPIFreeBuffer"); - MsOutlookAddrBookContactSourceService_MAPILogonEx + MsOutlookAddrBookContactSourceService_mapiLogonEx = (LPMAPILOGONEX) GetProcAddress(lib, "MAPILogonEx"); - if (!MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer - || !MsOutlookAddrBookContactSourceService_MAPIFreeBuffer - || !MsOutlookAddrBookContactSourceService_MAPILogonEx) - { - MsOutlookAddrBookContactSourceService_MAPIUninitialize(); - hResult = MAPI_E_NOT_FOUND; - } + if (MsOutlookAddrBookContactSourceService_mapiAllocateBuffer + && MsOutlookAddrBookContactSourceService_mapiFreeBuffer + && MsOutlookAddrBookContactSourceService_mapiLogonEx) + hResult = S_OK; + else + MsOutlookAddrBookContactSourceService_mapiUninitialize(); } } - else - hResult = MAPI_E_NOT_FOUND; if (HR_FAILED(hResult)) FreeLibrary(lib); } @@ -210,31 +315,31 @@ JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIUninitialize (JNIEnv *jniEnv, jclass clazz) { - MsOutlookAddrBookContactSourceService_MAPIUninitialize(); + MsOutlookAddrBookContactSourceService_mapiUninitialize(); } SCODE -MsOutlookAddrBook_MAPIAllocateBuffer(ULONG size, LPVOID FAR *buffer) +MsOutlookAddrBook_mapiAllocateBuffer(ULONG size, LPVOID FAR *buffer) { return - MsOutlookAddrBookContactSourceService_MAPIAllocateBuffer(size, buffer); + MsOutlookAddrBookContactSourceService_mapiAllocateBuffer(size, buffer); } ULONG -MsOutlookAddrBook_MAPIFreeBuffer(LPVOID buffer) +MsOutlookAddrBook_mapiFreeBuffer(LPVOID buffer) { - return MsOutlookAddrBookContactSourceService_MAPIFreeBuffer(buffer); + return MsOutlookAddrBookContactSourceService_mapiFreeBuffer(buffer); } HRESULT -MsOutlookAddrBook_MAPILogonEx +MsOutlookAddrBook_mapiLogonEx (ULONG_PTR uiParam, LPSTR profileName, LPSTR password, FLAGS flags, LPMAPISESSION FAR *mapiSession) { return - MsOutlookAddrBookContactSourceService_MAPILogonEx( + MsOutlookAddrBookContactSourceService_mapiLogonEx( uiParam, profileName, password, flags,