ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
August 2020
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
27 participants
188 discussions
Start a n
N
ew thread
[reactos] 01/01: [APPWIZ] Don't hung up in Gecko download cancellation #3049
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=90456e54a42604909bf2d…
commit 90456e54a42604909bf2d93cb74abbbf6574268f Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Fri Aug 14 23:40:10 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Fri Aug 14 23:40:10 2020 +0900 [APPWIZ] Don't hung up in Gecko download cancellation #3049 Do not call EndDialog outside the dialog procedure. CORE-14538 --- dll/cpl/appwiz/addons.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dll/cpl/appwiz/addons.c b/dll/cpl/appwiz/addons.c index 238348d0dce..32e29f9a46f 100644 --- a/dll/cpl/appwiz/addons.c +++ b/dll/cpl/appwiz/addons.c @@ -59,7 +59,7 @@ static const addon_info_t addons_info[] = { static const addon_info_t *addon; static HWND install_dialog = NULL; -static IBinding *download_binding; +static IBinding *download_binding = NULL; static WCHAR GeckoUrl[] = L"
https://svn.reactos.org/amine/wine_gecko-2.40-x86.msi
"; @@ -382,7 +382,7 @@ static DWORD WINAPI download_proc(PVOID arg) } DeleteFileW(tmp_file); - EndDialog(install_dialog, 0); + PostMessageW(install_dialog, WM_COMMAND, IDCANCEL, 0); return 0; }
4 years, 4 months
1
0
0
0
[reactos] 01/01: [XDK] Avoid defining interlocked intrinsics. CORE-17190
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=960511094b6110b383af1…
commit 960511094b6110b383af1f7e005ef35aa24b292b Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Fri Aug 14 09:19:21 2020 +0200 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Fri Aug 14 11:08:45 2020 +0200 [XDK] Avoid defining interlocked intrinsics. CORE-17190 Fixes build with MSVC 19.27+. --- sdk/include/xdk/interlocked.h | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/sdk/include/xdk/interlocked.h b/sdk/include/xdk/interlocked.h index 6a956c8edd4..dbdd46e38f6 100644 --- a/sdk/include/xdk/interlocked.h +++ b/sdk/include/xdk/interlocked.h @@ -301,9 +301,11 @@ #ifdef _M_IX86 +#undef _InterlockedExchange64 +#define _InterlockedExchange64 _InlineInterlockedExchange64 FORCEINLINE LONG64 -_InterlockedExchange64( +_InlineInterlockedExchange64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value) { @@ -316,9 +318,11 @@ _InterlockedExchange64( } } +#undef _InterlockedAdd64 +#define _InterlockedAdd64 _InlineInterlockedAdd64 FORCEINLINE LONG64 -_InterlockedAdd64( +_InlineInterlockedAdd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value) { @@ -332,9 +336,11 @@ _InterlockedAdd64( } } +#undef _InterlockedExchangeAdd64 +#define _InterlockedExchangeAdd64 _InlineInterlockedExchangeAdd64 FORCEINLINE LONG64 -_InterlockedExchangeAdd64 ( +_InlineInterlockedExchangeAdd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value ) @@ -349,9 +355,11 @@ _InterlockedExchangeAdd64 ( } } +#undef _InterlockedAnd64 +#define _InterlockedAnd64 _InlineInterlockedAnd64 FORCEINLINE LONG64 -_InterlockedAnd64( +_InlineInterlockedAnd64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value) { @@ -365,9 +373,11 @@ _InterlockedAnd64( } } +#undef _InterlockedOr64 +#define _InterlockedOr64 _InlineInterlockedOr64 FORCEINLINE LONG64 -_InterlockedOr64( +_InlineInterlockedOr64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value) { @@ -381,9 +391,11 @@ _InterlockedOr64( } } +#undef _InterlockedXor64 +#define _InterlockedXor64 _InlineInterlockedXor64 FORCEINLINE LONG64 -_InterlockedXor64( +_InlineInterlockedXor64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target, _In_ LONG64 Value) { @@ -397,17 +409,21 @@ _InterlockedXor64( } } +#undef _InterlockedIncrement64 +#define _InterlockedIncrement64 _InlineInterlockedIncrement64 FORCEINLINE LONG64 -_InterlockedIncrement64( +_InlineInterlockedIncrement64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target) { return _InterlockedAdd64(Target, 1); } +#undef _InterlockedDecrement64 +#define _InterlockedDecrement64 _InlineInterlockedDecrement64 FORCEINLINE LONG64 -_InterlockedDecrement64( +_InlineInterlockedDecrement64( _Inout_ _Interlocked_operand_ volatile LONG64 *Target) { return _InterlockedAdd64(Target, -1);
4 years, 4 months
1
0
0
0
[reactos] 01/01: [ComDlg32] Fix Driver String
by James Tabor
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=96a357b595afbc48b972e…
commit 96a357b595afbc48b972ebc7600ec2afa736e2ae Author: James Tabor <james.tabor(a)reactos.org> AuthorDate: Thu Aug 13 21:31:04 2020 -0500 Commit: James Tabor <james.tabor(a)reactos.org> CommitDate: Thu Aug 13 21:31:04 2020 -0500 [ComDlg32] Fix Driver String Use a fixed string for driver name, same as Windows. --- dll/win32/comdlg32/printdlg.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/dll/win32/comdlg32/printdlg.c b/dll/win32/comdlg32/printdlg.c index 0da728b1247..01dccc5ead7 100644 --- a/dll/win32/comdlg32/printdlg.c +++ b/dll/win32/comdlg32/printdlg.c @@ -460,6 +460,11 @@ static INT PRINTDLG_SetUpPrinterListComboW(HWND hDlg, UINT id, LPCWSTR name) return num; } +#ifdef __REACTOS__ +static const CHAR cDriverName[] = "winspool"; +static const WCHAR wDriverName[] = L"winspool"; +#endif + /*********************************************************************** * PRINTDLG_CreateDevNames [internal] * @@ -481,8 +486,11 @@ static BOOL PRINTDLG_CreateDevNames(HGLOBAL *hmem, const char* DeviceDriverName, p = strrchr( DeviceDriverName, '\\' ); if (p) DeviceDriverName = p + 1; - +#ifndef __REACTOS__ size = strlen(DeviceDriverName) + 1 +#else + size = strlen(cDriverName) + 1 +#endif + strlen(DeviceName) + 1 + strlen(OutputPort) + 1 + sizeof(DEVNAMES); @@ -498,7 +506,11 @@ static BOOL PRINTDLG_CreateDevNames(HGLOBAL *hmem, const char* DeviceDriverName, lpDevNames = (LPDEVNAMES) pDevNamesSpace; pTempPtr = pDevNamesSpace + sizeof(DEVNAMES); +#ifndef __REACTOS__ strcpy(pTempPtr, DeviceDriverName); +#else + strcpy(pTempPtr, cDriverName); +#endif lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; pTempPtr += strlen(DeviceDriverName) + 1; @@ -528,8 +540,11 @@ static BOOL PRINTDLG_CreateDevNamesW(HGLOBAL *hmem, LPCWSTR DeviceDriverName, p = wcsrchr( DeviceDriverName, '\\' ); if (p) DeviceDriverName = p + 1; - +#ifndef __REACTOS__ size = sizeof(WCHAR)*lstrlenW(DeviceDriverName) + 2 +#else + size = sizeof(WCHAR)*lstrlenW(wDriverName) + 2 +#endif + sizeof(WCHAR)*lstrlenW(DeviceName) + 2 + sizeof(WCHAR)*lstrlenW(OutputPort) + 2 + sizeof(DEVNAMES); @@ -545,7 +560,11 @@ static BOOL PRINTDLG_CreateDevNamesW(HGLOBAL *hmem, LPCWSTR DeviceDriverName, lpDevNames = (LPDEVNAMES) pDevNamesSpace; pTempPtr = (LPWSTR)((LPDEVNAMES)pDevNamesSpace + 1); +#ifndef __REACTOS__ lstrcpyW(pTempPtr, DeviceDriverName); +#else + lstrcpyW(pTempPtr, wDriverName); +#endif lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace; pTempPtr += lstrlenW(DeviceDriverName) + 1;
4 years, 4 months
1
0
0
0
[reactos] 01/01: [SHELL32_APITEST] Strengthen SHAppBarMessage testcase for workarea (#3041)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3aa9cae13e91c2819cc1e…
commit 3aa9cae13e91c2819cc1edbbb743ce22d18bf70c Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Thu Aug 13 20:59:36 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Thu Aug 13 20:59:36 2020 +0900 [SHELL32_APITEST] Strengthen SHAppBarMessage testcase for workarea (#3041) CORE-7237 - Add workarea checks. --- .../rostests/apitests/shell32/SHAppBarMessage.cpp | 52 +++++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/modules/rostests/apitests/shell32/SHAppBarMessage.cpp b/modules/rostests/apitests/shell32/SHAppBarMessage.cpp index 8129c7bf7d5..324eb585d62 100644 --- a/modules/rostests/apitests/shell32/SHAppBarMessage.cpp +++ b/modules/rostests/apitests/shell32/SHAppBarMessage.cpp @@ -962,16 +962,22 @@ protected: m_fMoving = FALSE; } + void GetWorkArea(LPRECT prc) const + { + SystemParametersInfoW(SPI_GETWORKAREA, 0, prc, 0); + } + public: void DoAction() { #define INTERVAL 250 POINT pt; - RECT rc1, rc2; + RECT rc1, rc2, rcWork; DWORD dwTID = GetWindowThreadProcessId(s_hwnd1, NULL); GetWindowRect(s_hwnd1, &rc1); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc1.left, s_rcWorkArea.left); ok_long(rc1.top, s_rcWorkArea.top); ok_long(rc1.right, s_rcWorkArea.right); @@ -980,36 +986,60 @@ public: ok_long(rc2.top, s_rcWorkArea.top + 80); ok_long(rc2.right, s_rcWorkArea.right); ok_long(rc2.bottom, s_rcWorkArea.top + 110); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top + 110); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); PostMessage(s_hwnd1, WM_CLOSE, 0, 0); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.left); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.right); ok_long(rc2.bottom, s_rcWorkArea.top + 30); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top + 30); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); AppBar_SetSide(s_hwnd2, ABE_LEFT); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.left); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.left + 30); + ok_long(rcWork.left, s_rcWorkArea.left + 30); + ok_long(rcWork.top, s_rcWorkArea.top); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); AppBar_SetSide(s_hwnd2, ABE_TOP); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.left); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.right); ok_long(rc2.bottom, s_rcWorkArea.top + 30); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top + 30); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); AppBar_SetSide(s_hwnd2, ABE_RIGHT); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.right - 30); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.right); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top); + ok_long(rcWork.right, s_rcWorkArea.right - 30); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); @@ -1027,9 +1057,14 @@ public: Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.left); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.left + 30); + ok_long(rcWork.left, s_rcWorkArea.left + 30); + ok_long(rcWork.top, s_rcWorkArea.top); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); @@ -1047,12 +1082,25 @@ public: Sleep(INTERVAL); GetWindowRect(s_hwnd2, &rc2); + GetWorkArea(&rcWork); ok_long(rc2.left, s_rcWorkArea.right - 30); ok_long(rc2.top, s_rcWorkArea.top); ok_long(rc2.right, s_rcWorkArea.right); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top); + ok_long(rcWork.right, s_rcWorkArea.right - 30); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); Sleep(INTERVAL); - PostMessage(s_hwnd2, WM_CLOSE, 0, 0); + SendMessage(s_hwnd2, WM_CLOSE, 0, 0); + Sleep(INTERVAL); + + GetWorkArea(&rcWork); + ok_long(rcWork.left, s_rcWorkArea.left); + ok_long(rcWork.top, s_rcWorkArea.top); + ok_long(rcWork.right, s_rcWorkArea.right); + ok_long(rcWork.bottom, s_rcWorkArea.bottom); + PostMessage(s_hwnd2, WM_QUIT, 0, 0); PostThreadMessage(dwTID, WM_QUIT, 0, 0); #undef INTERVAL
4 years, 4 months
1
0
0
0
[reactos] 01/01: [SHELL32_APITEST] Strengthen SHChangeNotify testcase more (#3038)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=90aff8dd09213c84752ec…
commit 90aff8dd09213c84752ecbaa472f6076cef15b7e Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Thu Aug 13 07:51:45 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Thu Aug 13 07:51:45 2020 +0900 [SHELL32_APITEST] Strengthen SHChangeNotify testcase more (#3038) - Add tests on SHCNRF_InterruptLevel and SHCNRF_RecursiveInterrupt. - Don't use clipboard for data exchange. - Close Explorer Cabinets before tests. CORE-13950 --- .../rostests/apitests/shell32/SHChangeNotify.cpp | 242 +++++++++++++++------ modules/rostests/apitests/shell32/SHChangeNotify.h | 5 +- modules/rostests/apitests/shell32/shell-notify.cpp | 49 +++-- 3 files changed, 203 insertions(+), 93 deletions(-) diff --git a/modules/rostests/apitests/shell32/SHChangeNotify.cpp b/modules/rostests/apitests/shell32/SHChangeNotify.cpp index 229a221037e..cd5b45c646c 100644 --- a/modules/rostests/apitests/shell32/SHChangeNotify.cpp +++ b/modules/rostests/apitests/shell32/SHChangeNotify.cpp @@ -5,6 +5,8 @@ * COPYRIGHT: Copyright 2020 Katayama Hirofumi MZ (katayama.hirofumi.mz(a)gmail.com) */ +// NOTE: This test program closes the Explorer cabinets before tests. + #include "shelltest.h" #include <shlwapi.h> #include <stdio.h> @@ -21,7 +23,7 @@ typedef void (*ACTION)(void); typedef struct TEST_ENTRY { INT line; - LONG event; + DWORD event; LPCVOID item1; LPCVOID item2; LPCSTR pattern; @@ -91,61 +93,107 @@ DoAction8(void) static const TEST_ENTRY s_TestEntriesMode0[] = { - {__LINE__, SHCNE_MKDIR, s_dir1, NULL, "000100000", NULL, s_dir1, L""}, - {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "000100000", NULL, s_dir2, L""}, - {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "000010000", NULL, s_dir2, L""}, - {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "000100000", DoAction1, s_dir2, L""}, - {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "000010000", NULL, s_dir2, L""}, - {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "000010000", DoAction2, s_dir2, L""}, - {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "000100000", DoAction1, s_dir2, L""}, - {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "000000010", NULL, s_dir2, s_dir3}, - {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "000000010", DoAction3, s_dir2, s_dir3}, - {__LINE__, SHCNE_CREATE, s_file1, NULL, "010000000", NULL, s_file1, L""}, - {__LINE__, SHCNE_CREATE, s_file1, s_file2, "010000000", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_CREATE, s_file1, NULL, "010000000", DoAction4, s_file1, L""}, - {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "100000000", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "100000000", DoAction5, s_file1, s_file2}, - {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "100000000", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_UPDATEITEM, s_file1, NULL, "000000100", NULL, s_file1, L""}, - {__LINE__, SHCNE_UPDATEITEM, s_file2, NULL, "000000100", NULL, s_file2, L""}, - {__LINE__, SHCNE_UPDATEITEM, s_file1, s_file2, "000000100", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_UPDATEITEM, s_file2, s_file1, "000000100", NULL, s_file2, s_file1}, - {__LINE__, SHCNE_DELETE, s_file1, NULL, "001000000", NULL, s_file1, L""}, - {__LINE__, SHCNE_DELETE, s_file2, NULL, "001000000", NULL, s_file2, L""}, - {__LINE__, SHCNE_DELETE, s_file2, s_file1, "001000000", NULL, s_file2, s_file1}, - {__LINE__, SHCNE_DELETE, s_file1, s_file2, "001000000", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_DELETE, s_file2, NULL, "001000000", DoAction6, s_file2, L""}, - {__LINE__, SHCNE_DELETE, s_file2, NULL, "001000000", NULL, s_file2, L""}, - {__LINE__, SHCNE_DELETE, s_file1, NULL, "001000000", NULL, s_file1, L""}, - {__LINE__, SHCNE_UPDATEDIR, s_file1, NULL, "000001000", NULL, s_file1, L""}, - {__LINE__, SHCNE_UPDATEDIR, s_file2, NULL, "000001000", NULL, s_file2, L""}, - {__LINE__, SHCNE_UPDATEDIR, s_file1, s_file2, "000001000", NULL, s_file1, s_file2}, - {__LINE__, SHCNE_UPDATEDIR, s_file2, s_file1, "000001000", NULL, s_file2, s_file1}, - {__LINE__, SHCNE_UPDATEDIR, s_dir1, NULL, "000001000", NULL, s_dir1, L""}, - {__LINE__, SHCNE_UPDATEDIR, s_dir2, NULL, "000001000", NULL, s_dir2, L""}, - {__LINE__, SHCNE_UPDATEDIR, s_dir1, s_dir2, "000001000", NULL, s_dir1, s_dir2}, - {__LINE__, SHCNE_UPDATEDIR, s_dir2, s_dir1, "000001000", NULL, s_dir2, s_dir1}, - {__LINE__, SHCNE_RMDIR, s_dir1, NULL, "000010000", NULL, s_dir1, L""}, - {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "000010000", NULL, s_dir2, L""}, - {__LINE__, SHCNE_RMDIR, s_dir3, NULL, "000010000", NULL, s_dir3, L""}, - {__LINE__, SHCNE_RMDIR, s_dir1, s_dir2, "000010000", NULL, s_dir1, s_dir2}, - {__LINE__, SHCNE_RMDIR, s_dir1, s_dir3, "000010000", NULL, s_dir1, s_dir3}, - {__LINE__, SHCNE_RMDIR, s_dir2, s_dir1, "000010000", NULL, s_dir2, s_dir1}, - {__LINE__, SHCNE_RMDIR, s_dir2, s_dir3, "000010000", NULL, s_dir2, s_dir3}, - {__LINE__, SHCNE_RMDIR, s_dir3, NULL, "000010000", NULL, s_dir3, L""}, - {__LINE__, SHCNE_RMDIR, s_dir3, NULL, "000010000", DoAction7, s_dir3, L""}, - {__LINE__, SHCNE_RMDIR, s_dir1, NULL, "000010000", NULL, s_dir1, L""}, - {__LINE__, SHCNE_RMDIR, s_dir1, NULL, "000010000", DoAction8, s_dir1, L""}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, NULL, DoAction1, NULL, NULL}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00001000", NULL, s_dir2, L""}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00001000", DoAction2, s_dir2, L""}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00010000", DoAction1, s_dir2, L""}, + {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "00000001", NULL, s_dir2, s_dir3}, + {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "00000001", DoAction3, s_dir2, s_dir3}, + {__LINE__, SHCNE_CREATE, s_file1, NULL, "01000000", NULL, s_file1, L""}, + {__LINE__, SHCNE_CREATE, s_file1, s_file2, "01000000", NULL, s_file1, s_file2}, + {__LINE__, SHCNE_CREATE, s_file1, NULL, "01000000", DoAction4, s_file1, L""}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "10000000", NULL, s_file1, s_file2}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "10000000", DoAction5, s_file1, s_file2}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "10000000", NULL, s_file1, s_file2}, + {__LINE__, SHCNE_UPDATEITEM, s_file1, NULL, "00000010", NULL, s_file1, L""}, + {__LINE__, SHCNE_UPDATEITEM, s_file2, NULL, "00000010", NULL, s_file2, L""}, + {__LINE__, SHCNE_DELETE, s_file1, NULL, "00100000", NULL, s_file1, L""}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00100000", NULL, s_file2, L""}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00100000", DoAction6, s_file2, L""}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00100000", NULL, s_file2, L""}, + {__LINE__, SHCNE_DELETE, s_file1, NULL, "00100000", NULL, s_file1, L""}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00001000", NULL, s_dir2, L""}, + {__LINE__, SHCNE_RMDIR, s_dir3, NULL, "00001000", DoAction7, s_dir3, L""}, + {__LINE__, SHCNE_RMDIR, s_dir1, NULL, "00001000", NULL, s_dir1, L""}, + {__LINE__, SHCNE_RMDIR, s_dir1, NULL, "00001000", DoAction8, s_dir1, L""}, }; #define s_TestEntriesMode1 s_TestEntriesMode0 #define s_TestEntriesMode2 s_TestEntriesMode0 +static const TEST_ENTRY s_TestEntriesMode3[] = +{ + {__LINE__, DONT_SEND, s_dir2, NULL, NULL, DoAction1, NULL, NULL}, + {__LINE__, DONT_SEND, s_dir2, NULL, "00001000", DoAction2, s_dir2, L""}, + {__LINE__, DONT_SEND, s_dir2, NULL, "00010000", DoAction1, s_dir2, L""}, + {__LINE__, DONT_SEND, s_dir2, s_dir3, "00000001", DoAction3, s_dir2, s_dir3}, + {__LINE__, DONT_SEND, s_file1, NULL, "01000000", DoAction4, s_file1, L""}, + {__LINE__, DONT_SEND, s_file1, s_file2, "10000000", DoAction5, s_file1, s_file2}, + {__LINE__, DONT_SEND, s_file2, NULL, "00100000", DoAction6, s_file2, L""}, + {__LINE__, DONT_SEND, s_dir3, NULL, "00001000", DoAction7, s_dir3, L""}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_MKDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, +}; + +static const TEST_ENTRY s_TestEntriesMode4[] = +{ + {__LINE__, DONT_SEND, s_dir2, NULL, NULL, DoAction1, NULL, NULL}, + {__LINE__, DONT_SEND, s_dir2, NULL, "00001000", DoAction2, s_dir2, L""}, + {__LINE__, DONT_SEND, s_dir2, NULL, "00010000", DoAction1, s_dir2, L""}, + {__LINE__, DONT_SEND, s_dir2, s_dir3, "00000001", DoAction3, s_dir2, s_dir3}, + {__LINE__, DONT_SEND, s_file1, NULL, "01000000", DoAction4, s_file1, L""}, + {__LINE__, DONT_SEND, s_file1, s_file2, "10000000", DoAction5, s_file1, s_file2}, + {__LINE__, DONT_SEND, s_file2, NULL, "00100000", DoAction6, s_file2, L""}, + {__LINE__, DONT_SEND, s_dir3, NULL, "00001000", DoAction7, s_dir3, L""}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_MKDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, +}; + +static const TEST_ENTRY s_TestEntriesMode5[] = +{ + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00000000", DoAction1, NULL, NULL}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_RMDIR, s_dir2, NULL, "00000000", DoAction2, NULL, NULL}, + {__LINE__, SHCNE_MKDIR, s_dir2, NULL, "00000000", DoAction1, NULL, NULL}, + {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_RENAMEFOLDER, s_dir2, s_dir3, "00000000", DoAction3, NULL, NULL}, + {__LINE__, SHCNE_CREATE, s_file1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_CREATE, s_file1, s_file2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_CREATE, s_file1, NULL, "00000000", DoAction4, NULL, NULL}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "00000000", DoAction5, NULL, NULL}, + {__LINE__, SHCNE_RENAMEITEM, s_file1, s_file2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_UPDATEITEM, s_file1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_UPDATEITEM, s_file2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_UPDATEITEM, s_file1, s_file2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_UPDATEITEM, s_file2, s_file1, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file2, s_file1, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file1, s_file2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00000000", DoAction6, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_DELETE, s_file1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir2, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir3, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir1, s_dir2, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir1, s_dir3, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir2, s_dir1, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir2, s_dir3, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir3, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir3, NULL, "00000000", DoAction7, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir1, NULL, "00000000", NULL, NULL, NULL}, + {__LINE__, SHCNE_INTERRUPT | SHCNE_RMDIR, s_dir1, NULL, "00000000", DoAction8, NULL, NULL}, +}; + LPCSTR PatternFromFlags(DWORD flags) { - static char s_buf[TYPE_FREESPACE + 1 + 1]; + static char s_buf[TYPE_RENAMEFOLDER + 1 + 1]; DWORD i; - for (i = 0; i <= TYPE_FREESPACE; ++i) + for (i = 0; i <= TYPE_RENAMEFOLDER; ++i) { s_buf[i] = (char)('0' + !!(flags & (1 << i))); } @@ -154,22 +202,17 @@ LPCSTR PatternFromFlags(DWORD flags) } static BOOL -DoGetClipText(LPWSTR pszPath1, LPWSTR pszPath2) +DoGetPaths(LPWSTR pszPath1, LPWSTR pszPath2) { pszPath1[0] = pszPath2[0] = 0; - if (!IsClipboardFormatAvailable(CF_UNICODETEXT)) - return FALSE; - - if (!OpenClipboard(NULL)) - return FALSE; - WCHAR szText[MAX_PATH * 2]; - HGLOBAL hGlobal = GetClipboardData(CF_UNICODETEXT); - LPWSTR psz = (LPWSTR)GlobalLock(hGlobal); - lstrcpynW(szText, psz, _countof(szText)); - GlobalUnlock(hGlobal); - CloseClipboard(); + szText[0] = 0; + if (FILE *fp = fopen(TEMP_FILE, "rb")) + { + fread(szText, 1, sizeof(szText), fp); + fclose(fp); + } LPWSTR pch = wcschr(szText, L'|'); if (pch == NULL) @@ -193,22 +236,46 @@ DoTestEntry(const TEST_ENTRY *entry) { SHChangeNotify(entry->event, SHCNF_PATHW | SHCNF_FLUSH, entry->item1, entry->item2); } + else + { + SHChangeNotify(0, SHCNF_FLUSH, NULL, NULL); + } DWORD flags = SendMessageW(s_hwnd, WM_GET_NOTIFY_FLAGS, 0, 0); LPCSTR pattern = PatternFromFlags(flags); - ok(lstrcmpA(pattern, entry->pattern) == 0, "Line %d: pattern mismatch '%s'\n", entry->line, pattern); + if (entry->pattern) + { + ok(lstrcmpA(pattern, entry->pattern) == 0 || + lstrcmpA(pattern, "00000100") == 0, // SHCNE_UPDATEDIR + "Line %d: pattern mismatch '%s'\n", entry->line, pattern); + } SendMessageW(s_hwnd, WM_SET_PATHS, 0, 0); + Sleep(50); WCHAR szPath1[MAX_PATH], szPath2[MAX_PATH]; - BOOL bOK = DoGetClipText(szPath1, szPath2); - if (entry->path1) - ok(bOK && lstrcmpiW(entry->path1, szPath1) == 0, - "Line %d: path1 mismatch '%S' (%d)\n", entry->line, szPath1, bOK); - if (entry->path2) - ok(bOK && lstrcmpiW(entry->path2, szPath2) == 0, - "Line %d: path2 mismatch '%S' (%d)\n", entry->line, szPath2, bOK); + szPath1[0] = szPath2[0] = 0; + BOOL bOK = DoGetPaths(szPath1, szPath2); + + if (lstrcmpA(pattern, "00000100") == 0) // SHCNE_UPDATEDIR + { + if (entry->path1) + ok(bOK && lstrcmpiW(s_dir1, szPath1) == 0, + "Line %d: path1 mismatch '%S' (%d)\n", entry->line, szPath1, bOK); + if (entry->path2) + ok(bOK && lstrcmpiW(L"", szPath2) == 0, + "Line %d: path2 mismatch '%S' (%d)\n", entry->line, szPath2, bOK); + } + else + { + if (entry->path1) + ok(bOK && lstrcmpiW(entry->path1, szPath1) == 0, + "Line %d: path1 mismatch '%S' (%d)\n", entry->line, szPath1, bOK); + if (entry->path2) + ok(bOK && lstrcmpiW(entry->path2, szPath2) == 0, + "Line %d: path2 mismatch '%S' (%d)\n", entry->line, szPath2, bOK); + } SendMessageW(s_hwnd, WM_CLEAR_FLAGS, 0, 0); } @@ -220,6 +287,20 @@ DoInit(void) CreateDirectoryW(s_dir1, NULL); + // close Explorer before tests + INT i, nCount = 50; + for (i = 0; i < nCount; ++i) + { + HWND hwnd = FindWindowW(L"CabinetWClass", NULL); + if (hwnd == NULL) + break; + + PostMessage(hwnd, WM_CLOSE, 0, 0); + Sleep(100); + } + if (i == nCount) + skip("Unable to close Explorer cabinet\n"); + return PathIsDirectoryW(s_dir1); } @@ -231,6 +312,7 @@ DoEnd(HWND hwnd) RemoveDirectoryW(s_dir3); RemoveDirectoryW(s_dir2); RemoveDirectoryW(s_dir1); + DeleteFileA(TEMP_FILE); SendMessageW(s_hwnd, WM_COMMAND, IDOK, 0); } @@ -259,6 +341,9 @@ GetSubProgramPath(void) static void JustDoIt(INT nMode) { + trace("nMode: %d\n", nMode); + SHChangeNotify(0, SHCNF_FLUSH, NULL, NULL); + if (!DoInit()) { skip("Unable to initialize.\n"); @@ -300,6 +385,24 @@ JustDoIt(INT nMode) DoTestEntry(&s_TestEntriesMode0[i]); } break; + case 3: + for (size_t i = 0; i < _countof(s_TestEntriesMode3); ++i) + { + DoTestEntry(&s_TestEntriesMode3[i]); + } + break; + case 4: + for (size_t i = 0; i < _countof(s_TestEntriesMode4); ++i) + { + DoTestEntry(&s_TestEntriesMode4[i]); + } + break; + case 5: + for (size_t i = 0; i < _countof(s_TestEntriesMode5); ++i) + { + DoTestEntry(&s_TestEntriesMode5[i]); + } + break; } DoEnd(s_hwnd); @@ -324,4 +427,7 @@ START_TEST(SHChangeNotify) JustDoIt(0); JustDoIt(1); JustDoIt(2); + JustDoIt(3); + JustDoIt(4); + JustDoIt(5); } diff --git a/modules/rostests/apitests/shell32/SHChangeNotify.h b/modules/rostests/apitests/shell32/SHChangeNotify.h index 7a5cbc4f988..71389513eb2 100644 --- a/modules/rostests/apitests/shell32/SHChangeNotify.h +++ b/modules/rostests/apitests/shell32/SHChangeNotify.h @@ -1,5 +1,7 @@ #pragma once +#define TEMP_FILE "shell-notify-temporary.txt" + typedef enum TYPE { TYPE_RENAMEITEM, @@ -9,8 +11,7 @@ typedef enum TYPE TYPE_RMDIR, TYPE_UPDATEDIR, TYPE_UPDATEITEM, - TYPE_RENAMEFOLDER, - TYPE_FREESPACE + TYPE_RENAMEFOLDER } TYPE; #define WM_SHELL_NOTIFY (WM_USER + 100) diff --git a/modules/rostests/apitests/shell32/shell-notify.cpp b/modules/rostests/apitests/shell32/shell-notify.cpp index 8f7043b96a4..367f43dc482 100644 --- a/modules/rostests/apitests/shell32/shell-notify.cpp +++ b/modules/rostests/apitests/shell32/shell-notify.cpp @@ -14,7 +14,7 @@ static HWND s_hwnd = NULL; static const WCHAR s_szName[] = L"SHChangeNotify testcase"; static INT s_nMode; -static BYTE s_counters[TYPE_FREESPACE + 1]; +static BYTE s_counters[TYPE_RENAMEFOLDER + 1]; static UINT s_uRegID = 0; static WCHAR s_path1[MAX_PATH], s_path2[MAX_PATH]; @@ -50,6 +50,22 @@ OnCreate(HWND hwnd) nSources = SHCNRF_ShellLevel | SHCNRF_NewDelivery; break; + case 3: + s_entry.fRecursive = TRUE; + nSources = SHCNRF_InterruptLevel | SHCNRF_RecursiveInterrupt | SHCNRF_NewDelivery; + break; + + case 4: + s_entry.fRecursive = FALSE; + nSources = SHCNRF_InterruptLevel | SHCNRF_NewDelivery; + break; + + case 5: + s_entry.fRecursive = TRUE; + nSources = SHCNRF_InterruptLevel | SHCNRF_RecursiveInterrupt | SHCNRF_NewDelivery; + s_entry.pidl = NULL; + break; + default: return FALSE; } @@ -144,7 +160,6 @@ DoShellNotify(HWND hwnd, PIDLIST_ABSOLUTE pidl1, PIDLIST_ABSOLUTE pidl2, LONG lE s_counters[TYPE_RENAMEFOLDER] = 1; break; case SHCNE_FREESPACE: - s_counters[TYPE_FREESPACE] = 1; break; case SHCNE_EXTENDED_EVENT: break; @@ -177,6 +192,9 @@ OnShellNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT OnGetNotifyFlags(HWND hwnd) { + if (s_uRegID == 0) + return 0xFFFFFFFF; + DWORD dwFlags = 0; for (size_t i = 0; i < _countof(s_counters); ++i) { @@ -187,34 +205,19 @@ OnGetNotifyFlags(HWND hwnd) } static void -DoSetClipText(HWND hwnd) +DoSetPaths(HWND hwnd) { - if (!OpenClipboard(hwnd)) - return; - - EmptyClipboard(); - WCHAR szText[MAX_PATH * 2]; lstrcpyW(szText, s_path1); lstrcatW(szText, L"|"); lstrcatW(szText, s_path2); - DWORD cbText = (lstrlenW(szText) + 1) * sizeof(WCHAR); - HGLOBAL hGlobal = GlobalAlloc(GHND | GMEM_SHARE, cbText); - if (hGlobal) + if (FILE *fp = fopen(TEMP_FILE, "wb")) { - LPWSTR psz = (LPWSTR)GlobalLock(hGlobal); - if (psz) - { - CopyMemory(psz, szText, cbText); - GlobalUnlock(hGlobal); - - SetClipboardData(CF_UNICODETEXT, hGlobal); - } + fwrite(szText, (lstrlenW(szText) + 1) * sizeof(WCHAR), 1, fp); + fflush(fp); + fclose(fp); } - - CloseClipboard(); - Sleep(60); } static LRESULT CALLBACK @@ -244,7 +247,7 @@ WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) break; case WM_SET_PATHS: - DoSetClipText(hwnd); + DoSetPaths(hwnd); break; default:
4 years, 4 months
1
0
0
0
[reactos] 01/01: [IMM32] Improve imm32.spec (#3036)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=526c23bde639f23bd6195…
commit 526c23bde639f23bd61950ce04e03e6308c2759a Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Wed Aug 12 06:04:28 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Wed Aug 12 06:04:28 2020 +0900 [IMM32] Improve imm32.spec (#3036) CORE-11700 --- dll/win32/imm32/imm32.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dll/win32/imm32/imm32.spec b/dll/win32/imm32/imm32.spec index 62f39546332..ca0ddb36904 100644 --- a/dll/win32/imm32/imm32.spec +++ b/dll/win32/imm32/imm32.spec @@ -1,13 +1,13 @@ @ stub ImmActivateLayout -@ stdcall ImmAssociateContext(long long) -@ stdcall ImmAssociateContextEx(long long long) -@ stdcall ImmConfigureIMEA(long long long ptr) -@ stdcall ImmConfigureIMEW(long long long ptr) +@ stdcall ImmAssociateContext(ptr ptr) +@ stdcall ImmAssociateContextEx(ptr ptr long) +@ stdcall ImmConfigureIMEA(ptr ptr long ptr) +@ stdcall ImmConfigureIMEW(ptr ptr long ptr) @ stdcall ImmCreateContext() @ stdcall ImmCreateIMCC(long) @ stdcall ImmCreateSoftKeyboard(long long long long) -@ stdcall ImmDestroyContext(long) -@ stdcall ImmDestroyIMCC(long) +@ stdcall ImmDestroyContext(ptr) +@ stdcall ImmDestroyIMCC(ptr) @ stdcall ImmDestroySoftKeyboard(ptr) @ stdcall ImmDisableIME(long) @ stdcall ImmDisableIme(long) ImmDisableIME
4 years, 4 months
1
0
0
0
[reactos] 01/01: [IMM32][NTUSER] Add ImmGetImeInfoEx (#3035)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4b038ec8b7019dca31219…
commit 4b038ec8b7019dca3121920540a75c3971e36845 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Wed Aug 12 06:03:29 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Wed Aug 12 06:03:29 2020 +0900 [IMM32][NTUSER] Add ImmGetImeInfoEx (#3035) - Add the definition of imm32!ImmGetImeInfoEx function. - Add IMEINFOEXCLASS and IS_IME_HKL into "ntuser.h". - Modify NtUserGetImeInfoEx function prototype. CORE-11700 --- dll/win32/imm32/imm.c | 27 +++++++++++++++++++++++++++ dll/win32/imm32/imm32.spec | 2 +- win32ss/include/ntuser.h | 12 ++++++++++-- win32ss/user/ntuser/ime.c | 6 +++--- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/dll/win32/imm32/imm.c b/dll/win32/imm32/imm.c index a493202a6aa..3b268feb545 100644 --- a/dll/win32/imm32/imm.c +++ b/dll/win32/imm32/imm.c @@ -3242,4 +3242,31 @@ BOOL WINAPI ImmRegisterClient(PVOID ptr, /* FIXME: should point to SHAREDINFO st FIXME("Stub\n"); return TRUE; } + +/*********************************************************************** + * ImmGetImeInfoEx (IMM32.@) + */ +BOOL WINAPI +ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, + IMEINFOEXCLASS SearchType, + PVOID pvSearchKey) +{ + switch (SearchType) + { + case ImeInfoExKeyboardLayout: + pImeInfoEx->hkl = *(LPHKL)pvSearchKey; + if (!IS_IME_HKL(pImeInfoEx->hkl)) + return FALSE; + break; + + case ImeInfoExImeFileName: + lstrcpynW(pImeInfoEx->wszImeFile, (LPWSTR)pvSearchKey, + ARRAY_SIZE(pImeInfoEx->wszImeFile)); + break; + + default: + return FALSE; + } + return NtUserGetImeInfoEx(pImeInfoEx, SearchType); +} #endif diff --git a/dll/win32/imm32/imm32.spec b/dll/win32/imm32/imm32.spec index 1d6a8174ca3..62f39546332 100644 --- a/dll/win32/imm32/imm32.spec +++ b/dll/win32/imm32/imm32.spec @@ -46,7 +46,7 @@ @ stdcall ImmGetIMCLockCount(long) @ stdcall ImmGetIMEFileNameA(long ptr long) @ stdcall ImmGetIMEFileNameW(long ptr long) -@ stub ImmGetImeInfoEx +@ stdcall ImmGetImeInfoEx(ptr long ptr) @ stdcall ImmGetImeMenuItemsA(long long long ptr ptr long) @ stdcall ImmGetImeMenuItemsW(long long long ptr ptr long) @ stdcall ImmGetOpenStatus(long) diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index 86cca3ab6e2..b997b21c848 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -1174,6 +1174,14 @@ typedef struct tagIMEINFOEX }; } IMEINFOEX, *PIMEINFOEX; +typedef enum IMEINFOEXCLASS +{ + ImeInfoExKeyboardLayout, + ImeInfoExImeFileName +} IMEINFOEXCLASS; + +#define IS_IME_HKL(hkl) ((((ULONG_PTR)(hkl)) & 0xF0000000) == 0xE0000000) + typedef struct tagIMEUI { PWND spwnd; @@ -2284,11 +2292,11 @@ NtUserGetImeHotKey(IN DWORD dwHotKey, OUT LPUINT lpuVKey, OUT LPHKL lphKL); -DWORD +BOOL NTAPI NtUserGetImeInfoEx( PIMEINFOEX pImeInfoEx, - DWORD dwUnknown2); + IMEINFOEXCLASS SearchType); DWORD NTAPI diff --git a/win32ss/user/ntuser/ime.c b/win32ss/user/ntuser/ime.c index c910738e9f6..4b587667e4e 100644 --- a/win32ss/user/ntuser/ime.c +++ b/win32ss/user/ntuser/ime.c @@ -103,14 +103,14 @@ NtUserGetAppImeLevel( return 0; } -DWORD +BOOL APIENTRY NtUserGetImeInfoEx( PIMEINFOEX pImeInfoEx, - DWORD dwUnknown2) + IMEINFOEXCLASS SearchType) { STUB; - return 0; + return FALSE; }
4 years, 4 months
1
0
0
0
[reactos] 01/01: [NTUSER] Add more QUERY_WINDOW_* values (#3034)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=047da7e63266a0606a95c…
commit 047da7e63266a0606a95cd2dfe799d2b7c6b7720 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Wed Aug 12 06:01:22 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Wed Aug 12 06:01:22 2020 +0900 [NTUSER] Add more QUERY_WINDOW_* values (#3034) Add QUERY_WINDOW_* constant values for NtUserQueryWindow funciton. CORE-11700 --- win32ss/include/ntuser.h | 3 +++ win32ss/user/ntuser/window.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index 15e0e995922..86cca3ab6e2 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -2798,6 +2798,9 @@ NtUserQueryUserCounters( #define QUERY_WINDOW_ISHUNG 0x04 #define QUERY_WINDOW_REAL_ID 0x05 #define QUERY_WINDOW_FOREGROUND 0x06 +#define QUERY_WINDOW_DEFAULT_IME 0x07 +#define QUERY_WINDOW_DEFAULT_ICONTEXT 0x08 +#define QUERY_WINDOW_ACTIVE_IME 0x09 DWORD_PTR NTAPI diff --git a/win32ss/user/ntuser/window.c b/win32ss/user/ntuser/window.c index 6095ed1b403..319cef9063a 100644 --- a/win32ss/user/ntuser/window.c +++ b/win32ss/user/ntuser/window.c @@ -3996,6 +3996,21 @@ NtUserQueryWindow(HWND hWnd, DWORD Index) Result = (pWnd->head.pti->MessageQueue == gpqForeground); break; + case QUERY_WINDOW_DEFAULT_IME: + ERR("QUERY_WINDOW_DEFAULT_IME: FIXME\n"); + Result = 0; + break; + + case QUERY_WINDOW_DEFAULT_ICONTEXT: + ERR("QUERY_WINDOW_DEFAULT_ICONTEXT: FIXME\n"); + Result = 0; + break; + + case QUERY_WINDOW_ACTIVE_IME: + ERR("QUERY_WINDOW_ACTIVE_IME: FIXME\n"); + Result = 0; + break; + default: Result = 0; break;
4 years, 4 months
1
0
0
0
[reactos] 01/01: [EXPLORER] Implement ABN_WINDOWARRANGE (#3033)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=451a9c6f5289c74dd1906…
commit 451a9c6f5289c74dd1906dd72e9404b32bc0ffd3 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Wed Aug 12 06:00:09 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Wed Aug 12 06:00:09 2020 +0900 [EXPLORER] Implement ABN_WINDOWARRANGE (#3033) The AppBar window has to receive the ABN_WINDOWARRANGE notification message before and after the window arrangement from taskbar. CORE-7237 --- base/shell/explorer/appbar.cpp | 21 +++++++++++++++------ base/shell/explorer/traywnd.cpp | 7 +++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/base/shell/explorer/appbar.cpp b/base/shell/explorer/appbar.cpp index f3a3e880692..3f980ec589f 100644 --- a/base/shell/explorer/appbar.cpp +++ b/base/shell/explorer/appbar.cpp @@ -75,19 +75,28 @@ static struct appbar_data* get_appbar(HWND hwnd) return NULL; } -/* send_poschanged: send ABN_POSCHANGED to every appbar except one */ -static void send_poschanged(HWND hwnd) +void appbar_notify_all(HMONITOR hMon, UINT uMsg, HWND hwndExclude, LPARAM lParam) { struct appbar_data* data; + LIST_FOR_EACH_ENTRY(data, &appbars, struct appbar_data, entry) { - if (data->hwnd != hwnd) - { - PostMessageW(data->hwnd, data->callback_msg, ABN_POSCHANGED, 0); - } + if (data->hwnd == hwndExclude) + continue; + + if (hMon && hMon != MonitorFromWindow(data->hwnd, MONITOR_DEFAULTTONULL)) + continue; + + SendMessageW(data->hwnd, data->callback_msg, uMsg, lParam); } } +/* send_poschanged: send ABN_POSCHANGED to every appbar except one */ +static void send_poschanged(HWND hwnd) +{ + appbar_notify_all(NULL, ABN_POSCHANGED, hwnd, 0); +} + /* appbar_cliprect: cut out parts of the rectangle that interfere with existing appbars */ static void appbar_cliprect( HWND hwnd, RECT *rect ) { diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index 2e081329d19..8dd491b0678 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -24,6 +24,7 @@ HRESULT TrayWindowCtxMenuCreator(ITrayWindow * TrayWnd, IN HWND hWndOwner, IContextMenu ** ppCtxMenu); LRESULT appbar_message(COPYDATASTRUCT* cds); +void appbar_notify_all(HMONITOR hMon, UINT uMsg, HWND hwndExclude, LPARAM lParam); #define WM_APP_TRAYDESTROY (WM_APP + 0x100) @@ -608,15 +609,21 @@ public: break; case ID_SHELL_CMD_TILE_WND_H: + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, TRUE); TileWindows(NULL, MDITILE_HORIZONTAL, NULL, 0, NULL); + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, FALSE); break; case ID_SHELL_CMD_TILE_WND_V: + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, TRUE); TileWindows(NULL, MDITILE_VERTICAL, NULL, 0, NULL); + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, FALSE); break; case ID_SHELL_CMD_CASCADE_WND: + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, TRUE); CascadeWindows(NULL, MDITILE_SKIPDISABLED, NULL, 0, NULL); + appbar_notify_all(NULL, ABN_WINDOWARRANGE, NULL, FALSE); break; case ID_SHELL_CMD_CUST_NOTIF:
4 years, 4 months
1
0
0
0
[reactos] 01/01: [SDK][INCLUDE] Add CLSID_CopyToMenu and CLSID_MoveToMenu (#3032)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=03e6eca3c2aaa61059085…
commit 03e6eca3c2aaa61059085570f8e14039f401158f Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Tue Aug 11 17:26:05 2020 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Tue Aug 11 17:26:05 2020 +0900 [SDK][INCLUDE] Add CLSID_CopyToMenu and CLSID_MoveToMenu (#3032) - Add CLSID_CopyToMenu and CLSID_MoveToMenu to "sdk/include/reactos/shlguid_undoc.h". - Remove some GUIDs from "com_apitest.h". CORE-11132 --- modules/rostests/apitests/com/com_apitest.h | 7 ------- sdk/include/reactos/shlguid_undoc.h | 2 ++ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/modules/rostests/apitests/com/com_apitest.h b/modules/rostests/apitests/com/com_apitest.h index 30142214a7e..5d93bfd14f1 100644 --- a/modules/rostests/apitests/com/com_apitest.h +++ b/modules/rostests/apitests/com/com_apitest.h @@ -76,7 +76,6 @@ DEFINE_GUID(CLSID_BrowserBand, 0x7ba4c742, 0x9e81, 0x11cf, 0x99, 0xd DEFINE_GUID(CLSID_CDBurn, 0xfbeb8a05, 0xbeee, 0x4442, 0x80, 0x4e, 0x40, 0x9d, 0x6c, 0x45, 0x15, 0xe9); DEFINE_GUID(CLSID_CDockingBarPropertyBag, 0x4af4a5fc, 0x912a, 0x11d1, 0xb9, 0x45, 0x00, 0xa0, 0xc9, 0x03, 0x12, 0xe1); DEFINE_GUID(CLSID_CommBand, 0x4d5c8c2a, 0xd075, 0x11d0, 0xb4, 0x16, 0x00, 0xc0, 0x4f, 0xb9, 0x03, 0x76); -DEFINE_GUID(CLSID_CopyToMenu, 0xC2FBB630, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13); DEFINE_GUID(CLSID_DeskMovr, 0x72267F6A, 0xA6F9, 0x11D0, 0xBC, 0x94, 0x00, 0xC0, 0x4F, 0xB6, 0x78, 0x63); DEFINE_GUID(CLSID_FadeTask, 0x7EB5FBE4, 0x2100, 0x49E6, 0x85, 0x93, 0x17, 0xE1, 0x30, 0x12, 0x2F, 0x91); DEFINE_GUID(CLSID_FolderItem, 0xfef10fa2, 0x355e, 0x4e06, 0x93, 0x81, 0x9b, 0x24, 0xd7, 0xf7, 0xcc, 0x88); @@ -85,13 +84,10 @@ DEFINE_GUID(CLSID_FolderViewHost, 0x20b1cb23, 0x6968, 0x4eb9, 0xb7, 0xd DEFINE_GUID(CLSID_ISFBand, 0xD82BE2B0, 0x5764, 0x11D0, 0xA9, 0x6E, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2); DEFINE_GUID(CLSID_ImageListCache, 0x3f4eef80, 0xbfe8, 0x11d0, 0xa3, 0xa5, 0x00, 0xc0, 0x4f, 0xd7, 0x06, 0xec); DEFINE_GUID(CLSID_ImgCtxThumbnailExtractor,0x7376d660, 0xc583, 0x11d0, 0xa3, 0xa5, 0x00, 0xc0, 0x4f, 0xd7, 0x06, 0xec); -DEFINE_GUID(CLSID_MergedFolder, 0x26fdc864, 0xbe88, 0x46e7, 0x92, 0x35, 0x03, 0x2d, 0x8e, 0xa5, 0x16, 0x2e); DEFINE_GUID(CLSID_MenuDeskBar, 0xECD4FC4F, 0x521C, 0x11D0, 0xB7, 0x92, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1); DEFINE_GUID(CLSID_MenuToolbarBase, 0x40b96610, 0xb522, 0x11d1, 0xb3, 0xb4, 0x00, 0xaa, 0x00, 0x6e, 0xfd, 0xe7); -DEFINE_GUID(CLSID_MoveToMenu, 0xC2FBB631, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13); DEFINE_GUID(CLSID_MruLongList, 0x53BD6B4E, 0x3780, 0x4693, 0xAF, 0xC3, 0x71, 0x61, 0xC2, 0xF3, 0xEE, 0x9C); DEFINE_GUID(CLSID_QuickLinks, 0x0E5CBF21, 0xD15F, 0x11D0, 0x83, 0x01, 0x00, 0xAA, 0x00, 0x5B, 0x43, 0x83); -DEFINE_GUID(CLSID_SendToMenu, 0x7BA4C740, 0x9E81, 0x11CF, 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37); DEFINE_GUID(CLSID_ShellFolderView, 0x62112aa1, 0xebe4, 0x11cf, 0xa5, 0xfb, 0x00, 0x20, 0xaf, 0xe7, 0x29, 0x2d); DEFINE_GUID(CLSID_ShellImageDataFactory, 0x66e4e4fb, 0xf385, 0x4dd0, 0x8d, 0x74, 0xa2, 0xef, 0xd1, 0xbc, 0x61, 0x78); DEFINE_GUID(CLSID_ShellLinkObject, 0x11219420, 0x1768, 0x11d1, 0x95, 0xbe, 0x00, 0x60, 0x97, 0x97, 0xea, 0x4f); @@ -105,13 +101,10 @@ DEFINE_GUID(CLSID_AttachmentServices, 0x4125dd96, 0xe03a, 0x4103, 0x8f, 0x7 DEFINE_GUID(IID_IAccessControl, 0xeedd23e0, 0x8410, 0x11ce, 0xa1, 0xc3, 0x08, 0x00, 0x2b, 0x2b, 0x8d, 0x8f); DEFINE_GUID(IID_IAccessor, 0x0c733a8c, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d); -DEFINE_GUID(IID_IACLCustomMRU, 0xf729fc5e, 0x8769, 0x4f3e, 0xbd, 0xb2, 0xd7, 0xb5, 0x0f, 0xd2, 0x27, 0x5b); DEFINE_GUID(IID_IActionProgress, 0x49ff1173, 0xeadc, 0x446d, 0x92, 0x85, 0x15, 0x64, 0x53, 0xa6, 0x43, 0x1c); DEFINE_GUID(IID_IActionProgressDialog, 0x49ff1172, 0xeadc, 0x446d, 0x92, 0x85, 0x15, 0x64, 0x53, 0xa6, 0x43, 0x1c); DEFINE_GUID(IID_IAddressBarParser, 0xc9d81948, 0x443a, 0x40c7, 0x94, 0x5c, 0x5e, 0x17, 0x1b, 0x8c, 0x66, 0xb4); DEFINE_GUID(IID_IAttachmentExecute, 0x73db1241, 0x1e85, 0x4581, 0x8e, 0x4f, 0xa8, 0x1e, 0x1d, 0x0f, 0x8c, 0x57); -DEFINE_GUID(IID_IAugmentedShellFolder, 0x91ea3f8c, 0xc99b, 0x11d0, 0x98, 0x15, 0x00, 0xc0, 0x4f, 0xd9, 0x19, 0x72); -DEFINE_GUID(IID_IAugmentedShellFolder2, 0x8db3b3f4, 0x6cfe, 0x11d1, 0x8a, 0xe9, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); DEFINE_GUID(IID_IBandHost, 0xb9075c7c, 0xd48e, 0x403f, 0xab, 0x99, 0xd6, 0xc7, 0x7a, 0x10, 0x84, 0xac); DEFINE_GUID(IID_IBrowserFrameOptions, 0x10df43c8, 0x1dbe, 0x11d3, 0x8b, 0x34, 0x00, 0x60, 0x97, 0xdf, 0x5b, 0xd4); DEFINE_GUID(IID_IComputerInfoChangeNotify, 0x0df60d92, 0x6818, 0x46d6, 0xb3, 0x58, 0xd6, 0x61, 0x70, 0xdd, 0xe4, 0x66); diff --git a/sdk/include/reactos/shlguid_undoc.h b/sdk/include/reactos/shlguid_undoc.h index 42021b6cdb1..4cb0ac39859 100644 --- a/sdk/include/reactos/shlguid_undoc.h +++ b/sdk/include/reactos/shlguid_undoc.h @@ -140,6 +140,8 @@ DEFINE_GUID(CLSID_SysTray, 0x35CEC8A3, 0x2BE6, 0x11D2, 0x87, 0x7 DEFINE_GUID(CLSID_BackgroundTaskScheduler, 0x603D3800, 0xBD81, 0x11d0, 0xA3, 0xA5, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC); DEFINE_GUID(CLSID_SharedTaskScheduler, 0x603D3801, 0xBD81, 0x11d0, 0xA3, 0xA5, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC); DEFINE_GUID(CLSID_SendToMenu, 0x7BA4C740, 0x9E81, 0x11CF, 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37); +DEFINE_GUID(CLSID_CopyToMenu, 0xC2FBB630, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13); +DEFINE_GUID(CLSID_MoveToMenu, 0xC2FBB631, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13); /* The following list of interfaces was taken from here:
http://www.geoffchappell.com/studies/windows/shell/shell32/interfaces/index…
*/ DEFINE_GUID(IID_IAggregateFilterCondition, 0x86228AA3, 0xA736, 0x4733, 0xBD, 0x8A, 0x10, 0xA8, 0x3C, 0x69, 0xBF, 0x84);
4 years, 4 months
1
0
0
0
← Newer
1
...
14
15
16
17
18
19
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Results per page:
10
25
50
100
200