mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +00:00
[SHELL32][SHELL32_APITEST][SDK] Implement SHEnumerateUnreadMailAccountsW (#7619)
Implementing missing features... JIRA issue: CORE-19278 - Move function definition from stubs.cpp into utils.cpp. - Add prototype to <shellapi.h>.
This commit is contained in:
parent
0bb8b46ba8
commit
aa52c3f5eb
6 changed files with 76 additions and 15 deletions
|
@ -30,21 +30,6 @@ SHGetUnreadMailCountW(HKEY hKeyUser,
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unimplemented
|
||||
*/
|
||||
EXTERN_C HRESULT
|
||||
WINAPI
|
||||
SHEnumerateUnreadMailAccountsW(HKEY user,
|
||||
DWORD idx,
|
||||
LPWSTR mailaddress,
|
||||
INT mailaddresslen)
|
||||
{
|
||||
FIXME("SHEnumerateUnreadMailAccountsW(%p %d %p %d) stub\n",
|
||||
user, idx, mailaddress, mailaddresslen);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unimplemented
|
||||
*/
|
||||
|
|
|
@ -901,6 +901,39 @@ SheRemoveQuotesW(LPWSTR psz)
|
|||
return psz;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHEnumerateUnreadMailAccountsW [SHELL32.287]
|
||||
*
|
||||
* @see https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shenumerateunreadmailaccountsw
|
||||
*/
|
||||
EXTERN_C
|
||||
HRESULT WINAPI
|
||||
SHEnumerateUnreadMailAccountsW(
|
||||
_In_opt_ HKEY hKeyUser,
|
||||
_In_ DWORD dwIndex,
|
||||
_Out_writes_(cchMailAddress) PWSTR pszMailAddress,
|
||||
_In_ INT cchMailAddress)
|
||||
{
|
||||
if (!hKeyUser)
|
||||
hKeyUser = HKEY_CURRENT_USER;
|
||||
|
||||
HKEY hKey;
|
||||
LSTATUS error = RegOpenKeyExW(hKeyUser,
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail",
|
||||
0, KEY_ENUMERATE_SUB_KEYS, &hKey);
|
||||
if (error)
|
||||
return HRESULT_FROM_WIN32(error);
|
||||
|
||||
FILETIME FileTime;
|
||||
error = RegEnumKeyExW(hKey, dwIndex, pszMailAddress, (PDWORD)&cchMailAddress, NULL, NULL,
|
||||
NULL, &FileTime);
|
||||
if (error)
|
||||
*pszMailAddress = UNICODE_NULL;
|
||||
|
||||
RegCloseKey(hKey);
|
||||
return error ? HRESULT_FROM_WIN32(error) : S_OK;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHFindComputer [SHELL32.91]
|
||||
*
|
||||
|
|
|
@ -34,6 +34,7 @@ list(APPEND SOURCE
|
|||
SHParseDisplayName.cpp
|
||||
SHRestricted.cpp
|
||||
SHShouldShowWizards.cpp
|
||||
SHEnumerateUnreadMailAccountsW.cpp
|
||||
She.cpp
|
||||
ShellExec_RunDLL.cpp
|
||||
ShellExecCmdLine.cpp
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Test for SHEnumerateUnreadMailAccountsW
|
||||
* COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
||||
*/
|
||||
|
||||
#include "shelltest.h"
|
||||
|
||||
START_TEST(SHEnumerateUnreadMailAccountsW)
|
||||
{
|
||||
HRESULT hr;
|
||||
WCHAR szMailAddress[MAX_PATH];
|
||||
HKEY hKey;
|
||||
LSTATUS error;
|
||||
DWORD dwDisposition;
|
||||
|
||||
error = RegCreateKeyExW(HKEY_CURRENT_USER,
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail\\example.com",
|
||||
0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);
|
||||
ok_long(error, ERROR_SUCCESS);
|
||||
|
||||
szMailAddress[0] = UNICODE_NULL;
|
||||
hr = SHEnumerateUnreadMailAccountsW(NULL, 0, szMailAddress, _countof(szMailAddress));
|
||||
ok_hex(hr, S_OK);
|
||||
ok(szMailAddress[0] != UNICODE_NULL, "szMailAddress was empty\n");
|
||||
|
||||
if (dwDisposition == REG_CREATED_NEW_KEY)
|
||||
{
|
||||
RegDeleteKeyW(HKEY_CURRENT_USER,
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail\\example.com");
|
||||
}
|
||||
}
|
|
@ -34,6 +34,7 @@ extern void func_SHChangeNotify(void);
|
|||
extern void func_SHCreateDataObject(void);
|
||||
extern void func_SHCreateFileDataObject(void);
|
||||
extern void func_SHCreateFileExtractIconW(void);
|
||||
extern void func_SHEnumerateUnreadMailAccountsW(void);
|
||||
extern void func_She(void);
|
||||
extern void func_ShellExec_RunDLL(void);
|
||||
extern void func_ShellExecCmdLine(void);
|
||||
|
@ -84,6 +85,7 @@ const struct test winetest_testlist[] =
|
|||
{ "SHCreateDataObject", func_SHCreateDataObject },
|
||||
{ "SHCreateFileDataObject", func_SHCreateFileDataObject },
|
||||
{ "SHCreateFileExtractIconW", func_SHCreateFileExtractIconW },
|
||||
{ "SHEnumerateUnreadMailAccountsW", func_SHEnumerateUnreadMailAccountsW },
|
||||
{ "She", func_She },
|
||||
{ "ShellExec_RunDLL", func_ShellExec_RunDLL },
|
||||
{ "ShellExecCmdLine", func_ShellExecCmdLine },
|
||||
|
|
|
@ -652,6 +652,13 @@ SHTestTokenMembership(
|
|||
_In_ ULONG ulRID);
|
||||
#endif
|
||||
|
||||
HRESULT WINAPI
|
||||
SHEnumerateUnreadMailAccountsW(
|
||||
_In_opt_ HKEY hKeyUser,
|
||||
_In_ DWORD dwIndex,
|
||||
_Out_writes_(cchMailAddress) PWSTR pszMailAddress,
|
||||
_In_ INT cchMailAddress);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
|
||||
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
|
||||
|
|
Loading…
Reference in a new issue