https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a48aa2110209aa0d39501e...
commit a48aa2110209aa0d39501e281a268890dc6afc7a Author: Katayama Hirofumi MZ katayama.hirofumi.mz@gmail.com AuthorDate: Thu Apr 23 04:19:20 2020 +0900 Commit: GitHub noreply@github.com CommitDate: Thu Apr 23 04:19:20 2020 +0900
[SENDMAIL][ZIPFLDR][MYDOCS] Fix creation of SendTo files (#2616)
- Improve and move SendTo files creation code and timing. - Delete IDS_DESKLINK of shell32. - Add IDS_DESKLINK into sendmail. CORE-16924 --- dll/shellext/mydocs/mydocs.cpp | 46 +++++++++++ dll/shellext/sendmail/lang/de-DE.rc | 7 ++ dll/shellext/sendmail/lang/en-US.rc | 1 + dll/shellext/sendmail/lang/es-ES.rc | 7 ++ dll/shellext/sendmail/lang/fr-FR.rc | 7 ++ dll/shellext/sendmail/lang/he-IL.rc | 7 ++ dll/shellext/sendmail/lang/id-ID.rc | 7 ++ dll/shellext/sendmail/lang/ja-JP.rc | 7 ++ dll/shellext/sendmail/lang/pl-PL.rc | 7 ++ dll/shellext/sendmail/lang/pt-PT.rc | 7 ++ dll/shellext/sendmail/lang/ru-RU.rc | 7 ++ dll/shellext/sendmail/resource.h | 3 +- dll/shellext/sendmail/sendmail.cpp | 47 +++++++++++ dll/shellext/sendmail/sendmail.rc | 27 ++++++ dll/shellext/zipfldr/zipfldr.cpp | 44 ++++++++++ dll/win32/shell32/CSendToMenu.cpp | 159 ------------------------------------ dll/win32/shell32/CSendToMenu.h | 3 - dll/win32/shell32/lang/bg-BG.rc | 1 - dll/win32/shell32/lang/ca-ES.rc | 1 - dll/win32/shell32/lang/cs-CZ.rc | 1 - dll/win32/shell32/lang/da-DK.rc | 1 - dll/win32/shell32/lang/de-DE.rc | 1 - dll/win32/shell32/lang/el-GR.rc | 1 - dll/win32/shell32/lang/en-GB.rc | 1 - dll/win32/shell32/lang/en-US.rc | 1 - dll/win32/shell32/lang/es-ES.rc | 1 - dll/win32/shell32/lang/et-EE.rc | 1 - dll/win32/shell32/lang/fi-FI.rc | 1 - dll/win32/shell32/lang/fr-FR.rc | 1 - dll/win32/shell32/lang/he-IL.rc | 1 - dll/win32/shell32/lang/hi-IN.rc | 1 - dll/win32/shell32/lang/hu-HU.rc | 1 - dll/win32/shell32/lang/id-ID.rc | 1 - dll/win32/shell32/lang/it-IT.rc | 1 - dll/win32/shell32/lang/ja-JP.rc | 1 - dll/win32/shell32/lang/ko-KR.rc | 1 - dll/win32/shell32/lang/nl-NL.rc | 1 - dll/win32/shell32/lang/no-NO.rc | 1 - dll/win32/shell32/lang/pl-PL.rc | 1 - dll/win32/shell32/lang/pt-BR.rc | 1 - dll/win32/shell32/lang/pt-PT.rc | 1 - dll/win32/shell32/lang/ro-RO.rc | 1 - dll/win32/shell32/lang/ru-RU.rc | 1 - dll/win32/shell32/lang/sk-SK.rc | 1 - dll/win32/shell32/lang/sl-SI.rc | 1 - dll/win32/shell32/lang/sq-AL.rc | 1 - dll/win32/shell32/lang/sv-SE.rc | 1 - dll/win32/shell32/lang/tr-TR.rc | 1 - dll/win32/shell32/lang/uk-UA.rc | 1 - dll/win32/shell32/lang/zh-CN.rc | 1 - dll/win32/shell32/lang/zh-TW.rc | 1 - dll/win32/shell32/shresdef.h | 1 - 52 files changed, 230 insertions(+), 198 deletions(-)
diff --git a/dll/shellext/mydocs/mydocs.cpp b/dll/shellext/mydocs/mydocs.cpp index c5954c1ff88..1268510bf4e 100644 --- a/dll/shellext/mydocs/mydocs.cpp +++ b/dll/shellext/mydocs/mydocs.cpp @@ -16,6 +16,47 @@ END_OBJECT_MAP() CComModule gModule; LONG g_ModuleRefCnt = 0;
+static BOOL +CreateEmptyFile(LPCWSTR pszFile) +{ + HANDLE hFile; + hFile = CreateFileW(pszFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile != INVALID_HANDLE_VALUE) + { + CloseHandle(hFile); + return TRUE; + } + return FALSE; +} + +static HRESULT +CreateSendToMyDocuments(LPCWSTR pszSendTo) +{ + WCHAR szTarget[MAX_PATH], szSendToFile[MAX_PATH]; + + SHGetSpecialFolderPathW(NULL, szTarget, CSIDL_MYDOCUMENTS, FALSE); + + StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); + PathAppendW(szSendToFile, PathFindFileNameW(szTarget)); + StringCbCatW(szSendToFile, sizeof(szSendToFile), L".mydocs"); + + if (!CreateEmptyFile(szSendToFile)) + { + ERR("CreateEmptyFile(%S, %S) failed!\n", szSendToFile, szTarget); + return E_FAIL; + } + + return S_OK; +} + +static HRESULT +GetDefaultUserSendTo(LPWSTR pszPath) +{ + return SHGetFolderPathW(NULL, CSIDL_SENDTO, INVALID_HANDLE_VALUE, + SHGFP_TYPE_DEFAULT, pszPath); +} + STDAPI DllCanUnloadNow(void) { if (g_ModuleRefCnt) @@ -40,6 +81,11 @@ STDAPI DllRegisterServer(void) if (FAILED_UNEXPECTEDLY(hr)) return hr;
+ WCHAR szSendTo[MAX_PATH]; + hr = GetDefaultUserSendTo(szSendTo); + if (SUCCEEDED(hr)) + CreateSendToMyDocuments(szSendTo); + return S_OK; }
diff --git a/dll/shellext/sendmail/lang/de-DE.rc b/dll/shellext/sendmail/lang/de-DE.rc new file mode 100644 index 00000000000..d4709389293 --- /dev/null +++ b/dll/shellext/sendmail/lang/de-DE.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +STRINGTABLE +{ + IDS_DESKLINK, "Desktop (Verknüpfung erstellen)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/en-US.rc b/dll/shellext/sendmail/lang/en-US.rc index 20ec90700cb..c5811e70659 100644 --- a/dll/shellext/sendmail/lang/en-US.rc +++ b/dll/shellext/sendmail/lang/en-US.rc @@ -2,5 +2,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE { + IDS_DESKLINK, "Desktop (Create shortcut)" IDS_SHORTCUT, "Shortcut to %s" } diff --git a/dll/shellext/sendmail/lang/es-ES.rc b/dll/shellext/sendmail/lang/es-ES.rc new file mode 100644 index 00000000000..d6a6382f013 --- /dev/null +++ b/dll/shellext/sendmail/lang/es-ES.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +STRINGTABLE +{ + IDS_DESKLINK, "Crear acceso directo en el Escritorio" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/fr-FR.rc b/dll/shellext/sendmail/lang/fr-FR.rc new file mode 100644 index 00000000000..a5a65575e90 --- /dev/null +++ b/dll/shellext/sendmail/lang/fr-FR.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +STRINGTABLE +{ + IDS_DESKLINK, "Bureau (Créer un raccourci)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/he-IL.rc b/dll/shellext/sendmail/lang/he-IL.rc new file mode 100644 index 00000000000..37ae63195ed --- /dev/null +++ b/dll/shellext/sendmail/lang/he-IL.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT + +STRINGTABLE +{ + IDS_DESKLINK, "שולחן העבודה (צור קיצור דרך)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/id-ID.rc b/dll/shellext/sendmail/lang/id-ID.rc new file mode 100644 index 00000000000..b88a26027ee --- /dev/null +++ b/dll/shellext/sendmail/lang/id-ID.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT + +STRINGTABLE +{ + IDS_DESKLINK, "Desktop (Buat pintasan)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/ja-JP.rc b/dll/shellext/sendmail/lang/ja-JP.rc new file mode 100644 index 00000000000..647041d62bc --- /dev/null +++ b/dll/shellext/sendmail/lang/ja-JP.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT + +STRINGTABLE +{ + IDS_DESKLINK, "デスクトップ (ショートカットの作成)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/pl-PL.rc b/dll/shellext/sendmail/lang/pl-PL.rc new file mode 100644 index 00000000000..633bb81a657 --- /dev/null +++ b/dll/shellext/sendmail/lang/pl-PL.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +STRINGTABLE +{ + IDS_DESKLINK, "Pulpit (utwórz skrót)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/pt-PT.rc b/dll/shellext/sendmail/lang/pt-PT.rc new file mode 100644 index 00000000000..19d03b91b65 --- /dev/null +++ b/dll/shellext/sendmail/lang/pt-PT.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL + +STRINGTABLE +{ + IDS_DESKLINK, "Área de trabalho (Criar atalho)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/lang/ru-RU.rc b/dll/shellext/sendmail/lang/ru-RU.rc new file mode 100644 index 00000000000..aa6e247227c --- /dev/null +++ b/dll/shellext/sendmail/lang/ru-RU.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +STRINGTABLE +{ + IDS_DESKLINK, "Рабочий стол (создать ярлык)" + IDS_SHORTCUT, "Shortcut to %s" +} diff --git a/dll/shellext/sendmail/resource.h b/dll/shellext/sendmail/resource.h index 72b69650f76..7b13f185c92 100644 --- a/dll/shellext/sendmail/resource.h +++ b/dll/shellext/sendmail/resource.h @@ -2,7 +2,7 @@ * PROJECT: sendmail * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+) * PURPOSE: DeskLink implementation - * COPYRIGHT: Copyright 2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) + * COPYRIGHT: Copyright 2019-2020 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */
#ifndef RESOURCE_H_ @@ -10,5 +10,6 @@
#define IDR_DESKLINK 100 #define IDS_SHORTCUT 1000 +#define IDS_DESKLINK 21
#endif diff --git a/dll/shellext/sendmail/sendmail.cpp b/dll/shellext/sendmail/sendmail.cpp index 6cdaae92032..a1de97ec1ae 100644 --- a/dll/shellext/sendmail/sendmail.cpp +++ b/dll/shellext/sendmail/sendmail.cpp @@ -15,6 +15,47 @@ END_OBJECT_MAP()
CComModule gModule; LONG g_ModuleRefCnt = 0; +HINSTANCE g_hModule; + +static BOOL +CreateEmptyFile(LPCWSTR pszFile) +{ + HANDLE hFile; + hFile = CreateFileW(pszFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile != INVALID_HANDLE_VALUE) + { + CloseHandle(hFile); + return TRUE; + } + return FALSE; +} + +static HRESULT +CreateSendToDeskLink(LPCWSTR pszSendTo) +{ + WCHAR szTarget[MAX_PATH], szSendToFile[MAX_PATH]; + + LoadStringW(g_hModule, IDS_DESKLINK, szTarget, _countof(szTarget)); + StringCbCatW(szTarget, sizeof(szTarget), L".DeskLink"); + + StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); + PathAppendW(szSendToFile, szTarget); + + if (!CreateEmptyFile(szSendToFile)) + { + ERR("CreateEmptyFile('%ls')\n", szSendToFile); + return E_FAIL; + } + return S_OK; +} + +static HRESULT +GetDefaultUserSendTo(LPWSTR pszPath) +{ + return SHGetFolderPathW(NULL, CSIDL_SENDTO, INVALID_HANDLE_VALUE, + SHGFP_TYPE_DEFAULT, pszPath); +}
STDAPI DllCanUnloadNow(void) { @@ -40,6 +81,11 @@ STDAPI DllRegisterServer(void) if (FAILED_UNEXPECTEDLY(hr)) return hr;
+ WCHAR szSendTo[MAX_PATH]; + hr = GetDefaultUserSendTo(szSendTo); + if (SUCCEEDED(hr)) + CreateSendToDeskLink(szSendTo); + return S_OK; }
@@ -117,6 +163,7 @@ STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad) TRACE("%p 0x%x %p\n", hInstance, dwReason, fImpLoad); if (dwReason == DLL_PROCESS_ATTACH) { + g_hModule = hInstance; gModule.Init(ObjectMap, hInstance, NULL); DisableThreadLibraryCalls(hInstance); } diff --git a/dll/shellext/sendmail/sendmail.rc b/dll/shellext/sendmail/sendmail.rc index 8b4d4f7eb38..55636184134 100644 --- a/dll/shellext/sendmail/sendmail.rc +++ b/dll/shellext/sendmail/sendmail.rc @@ -18,6 +18,33 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDR_DESKLINK REGISTRY "res/desklink.rgs"
+#ifdef LANGUAGE_DE_DE + #include "lang/de-DE.rc" +#endif #ifdef LANGUAGE_EN_US #include "lang/en-US.rc" #endif +#ifdef LANGUAGE_ES_ES + #include "lang/es-ES.rc" +#endif +#ifdef LANGUAGE_FR_FR + #include "lang/fr-FR.rc" +#endif +#ifdef LANGUAGE_HE_IL + #include "lang/he-IL.rc" +#endif +#ifdef LANGUAGE_ID_ID + #include "lang/id-ID.rc" +#endif +#ifdef LANGUAGE_JA_JP + #include "lang/ja-JP.rc" +#endif +#ifdef LANGUAGE_PL_PL + #include "lang/pl-PL.rc" +#endif +#ifdef LANGUAGE_PT_PT + #include "lang/pt-PT.rc" +#endif +#ifdef LANGUAGE_RU_RU + #include "lang/ru-RU.rc" +#endif diff --git a/dll/shellext/zipfldr/zipfldr.cpp b/dll/shellext/zipfldr/zipfldr.cpp index eecb1ac02de..5dee2d1cb24 100644 --- a/dll/shellext/zipfldr/zipfldr.cpp +++ b/dll/shellext/zipfldr/zipfldr.cpp @@ -47,6 +47,45 @@ static void init_zlib() fill_win32_filefunc64W(&g_FFunc); }
+static BOOL +CreateEmptyFile(LPCWSTR pszFile) +{ + HANDLE hFile; + hFile = CreateFileW(pszFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile != INVALID_HANDLE_VALUE) + { + CloseHandle(hFile); + return TRUE; + } + return FALSE; +} + +static HRESULT +CreateSendToZip(LPCWSTR pszSendTo) +{ + WCHAR szTarget[MAX_PATH], szSendToFile[MAX_PATH]; + + LoadStringW(g_hModule, IDS_FRIENDLYNAME, szTarget, _countof(szTarget)); + + StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); + PathAppendW(szSendToFile, szTarget); + StringCbCatW(szSendToFile, sizeof(szSendToFile), L".ZFSendToTarget"); + if (!CreateEmptyFile(szSendToFile)) + { + DPRINT1("CreateEmptyFile('%ls')\n", szSendToFile); + return E_FAIL; + } + return S_OK; +} + +static HRESULT +GetDefaultUserSendTo(LPWSTR pszPath) +{ + return SHGetFolderPathW(NULL, CSIDL_SENDTO, INVALID_HANDLE_VALUE, + SHGFP_TYPE_DEFAULT, pszPath); +} + EXTERN_C BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { @@ -87,6 +126,11 @@ STDAPI DllRegisterServer() if (FAILED(hr)) return hr;
+ WCHAR szSendTo[MAX_PATH]; + hr = GetDefaultUserSendTo(szSendTo); + if (SUCCEEDED(hr)) + CreateSendToZip(szSendTo); + return S_OK; }
diff --git a/dll/win32/shell32/CSendToMenu.cpp b/dll/win32/shell32/CSendToMenu.cpp index fc4a224ea85..9e9fbe8afeb 100644 --- a/dll/win32/shell32/CSendToMenu.cpp +++ b/dll/win32/shell32/CSendToMenu.cpp @@ -156,169 +156,10 @@ void CSendToMenu::UnloadAllItems() } }
-BOOL CSendToMenu::FolderHasAnyItems() const -{ - WCHAR szPath[MAX_PATH]; - SHGetSpecialFolderPathW(NULL, szPath, CSIDL_SENDTO, FALSE); - - PathAppendW(szPath, L"*"); - - WIN32_FIND_DATAW find; - HANDLE hFind = FindFirstFileW(szPath, &find); - if (hFind == INVALID_HANDLE_VALUE) - return FALSE; - - BOOL bFound = FALSE; - do - { - if (wcscmp(find.cFileName, L".") == 0 || - wcscmp(find.cFileName, L"..") == 0 || - _wcsicmp(find.cFileName, L"desktop.ini") == 0) - { - continue; - } - - bFound = TRUE; - break; - } while (FindNextFileW(hFind, &find)); - - FindClose(hFind); - return bFound; -} - -static BOOL CreateEmptyFile(LPCWSTR pszFile) -{ - HANDLE hFile; - hFile = CreateFileW(pszFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - CloseHandle(hFile); - return hFile != INVALID_HANDLE_VALUE; -} - -static HRESULT -CreateShellLink( - LPCWSTR pszLinkPath, - LPCWSTR pszTargetPath OPTIONAL, - LPCITEMIDLIST pidlTarget OPTIONAL, - LPCWSTR pszArg OPTIONAL, - LPCWSTR pszDir OPTIONAL, - LPCWSTR pszIconPath OPTIONAL, - INT iIconNr OPTIONAL, - LPCWSTR pszComment OPTIONAL) -{ - CComPtr<IShellLinkW> psl; - HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, - CLSCTX_INPROC_SERVER, - IID_PPV_ARG(IShellLinkW, &psl)); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - - if (pszTargetPath) - { - hr = psl->SetPath(pszTargetPath); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - } - else if (pidlTarget) - { - hr = psl->SetIDList(pidlTarget); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - } - else - { - ERR("invalid argument\n"); - return E_INVALIDARG; - } - - if (pszArg) - hr = psl->SetArguments(pszArg); - - if (pszDir) - hr = psl->SetWorkingDirectory(pszDir); - - if (pszIconPath) - hr = psl->SetIconLocation(pszIconPath, iIconNr); - - if (pszComment) - hr = psl->SetDescription(pszComment); - - CComPtr<IPersistFile> ppf; - hr = psl->QueryInterface(IID_PPV_ARG(IPersistFile, &ppf)); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - - hr = ppf->Save(pszLinkPath, TRUE); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - - return hr; -} - -HRESULT CSendToMenu::CreateSendToFiles(LPCWSTR pszSendTo) -{ - WCHAR szTarget[MAX_PATH]; - WCHAR szSendToFile[MAX_PATH]; - WCHAR szShell32[MAX_PATH]; - HRESULT hr; - - /* create my documents */ - SHGetSpecialFolderPathW(NULL, szTarget, CSIDL_MYDOCUMENTS, FALSE); - - StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); - PathAppendW(szSendToFile, PathFindFileNameW(szTarget)); - StringCbCatW(szSendToFile, sizeof(szSendToFile), L".lnk"); - - GetSystemDirectoryW(szShell32, ARRAY_SIZE(szShell32)); - PathAppendW(szShell32, L"shell32.dll"); - hr = CreateShellLink(szSendToFile, szTarget, NULL, NULL, NULL, - szShell32, -IDI_SHELL_MY_DOCUMENTS, NULL); - if (FAILED_UNEXPECTEDLY(hr)) - ERR("CreateShellLink(%S, %S) failed!\n", szSendToFile, szTarget); - - /* create desklink */ - StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); - LoadStringW(shell32_hInstance, IDS_DESKLINK, szTarget, _countof(szTarget)); - StringCbCatW(szTarget, sizeof(szTarget), L".DeskLink"); - PathAppendW(szSendToFile, szTarget); - if (!CreateEmptyFile(szSendToFile)) - { - ERR("CreateEmptyFile\n"); - } - - /* create zipped compressed folder */ - HINSTANCE hZipFldr = - LoadLibraryExW(L"zipfldr.dll", NULL, LOAD_LIBRARY_AS_DATAFILE); - if (hZipFldr) - { -#define IDS_FRIENDLYNAME 10195 - LoadStringW(hZipFldr, IDS_FRIENDLYNAME, szTarget, _countof(szTarget)); -#undef IDS_FRIENDLYNAME - FreeLibrary(hZipFldr); - - StringCbCopyW(szSendToFile, sizeof(szSendToFile), pszSendTo); - PathAppendW(szSendToFile, szTarget); - StringCbCatW(szSendToFile, sizeof(szSendToFile), L".ZFSendToTarget"); - if (!CreateEmptyFile(szSendToFile)) - { - ERR("CreateEmptyFile\n"); - } - } - - return S_OK; -} - HRESULT CSendToMenu::LoadAllItems(HWND hwnd) { UnloadAllItems();
- if (!FolderHasAnyItems()) - { - WCHAR szPath[MAX_PATH]; - SHGetSpecialFolderPathW(NULL, szPath, CSIDL_SENDTO, FALSE); - CreateSendToFiles(szPath); - } - CComHeapPtr<ITEMIDLIST_ABSOLUTE> pidlSendTo;
m_pSendTo.Release(); diff --git a/dll/win32/shell32/CSendToMenu.h b/dll/win32/shell32/CSendToMenu.h index 2156f1ee75e..2f59319921e 100644 --- a/dll/win32/shell32/CSendToMenu.h +++ b/dll/win32/shell32/CSendToMenu.h @@ -69,9 +69,6 @@ private: HRESULT LoadAllItems(HWND hwnd); void UnloadAllItems();
- BOOL FolderHasAnyItems() const; - HRESULT CreateSendToFiles(LPCWSTR pszSendTo); - UINT InsertSendToItems(HMENU hMenu, UINT idFirst, UINT idMenu);
SENDTO_ITEM *FindItemFromIdOffset(UINT IdOffset); diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc index 61590e669fd..eb4278be4d1 100644 --- a/dll/win32/shell32/lang/bg-BG.rc +++ b/dll/win32/shell32/lang/bg-BG.rc @@ -770,7 +770,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc index b046ec113c2..4f9c535ea3d 100644 --- a/dll/win32/shell32/lang/ca-ES.rc +++ b/dll/win32/shell32/lang/ca-ES.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc index 49edf7bc821..a5dfe14431f 100644 --- a/dll/win32/shell32/lang/cs-CZ.rc +++ b/dll/win32/shell32/lang/cs-CZ.rc @@ -775,7 +775,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc index 73cb4c7b791..35d470cb76f 100644 --- a/dll/win32/shell32/lang/da-DK.rc +++ b/dll/win32/shell32/lang/da-DK.rc @@ -775,7 +775,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc index ed353d9cbe1..93e56871036 100644 --- a/dll/win32/shell32/lang/de-DE.rc +++ b/dll/win32/shell32/lang/de-DE.rc @@ -770,7 +770,6 @@ BEGIN IDS_EJECT "Auswerfen" IDS_DISCONNECT "Trennen" IDS_OPENFILELOCATION "Date&ipfad öffnen" - IDS_DESKLINK "Desktop (Verknüpfung erstellen)" IDS_SENDTO_MENU "S&enden an"
IDS_MOVEERRORTITLE "Fehler beim Verschieben der Datei/des Ordners" diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc index d2f9abcd3fd..8457e340311 100644 --- a/dll/win32/shell32/lang/el-GR.rc +++ b/dll/win32/shell32/lang/el-GR.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc index d778623377b..e9b4f104eb1 100644 --- a/dll/win32/shell32/lang/en-GB.rc +++ b/dll/win32/shell32/lang/en-GB.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc index dc5bc3001ce..692d30c7a6e 100644 --- a/dll/win32/shell32/lang/en-US.rc +++ b/dll/win32/shell32/lang/en-US.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc index 7629f98b54d..4f455ebcedd 100644 --- a/dll/win32/shell32/lang/es-ES.rc +++ b/dll/win32/shell32/lang/es-ES.rc @@ -778,7 +778,6 @@ BEGIN IDS_EJECT "Extraer" IDS_DISCONNECT "Desconectar" IDS_OPENFILELOCATION "Abrir &ubicación del archivo" - IDS_DESKLINK "Crear acceso directo en el Escritorio" IDS_SENDTO_MENU "E&nviar a"
IDS_MOVEERRORTITLE "Error moviendo Archivo o Carpeta" diff --git a/dll/win32/shell32/lang/et-EE.rc b/dll/win32/shell32/lang/et-EE.rc index c6e41d8299a..e991c453a22 100644 --- a/dll/win32/shell32/lang/et-EE.rc +++ b/dll/win32/shell32/lang/et-EE.rc @@ -776,7 +776,6 @@ BEGIN IDS_EJECT "Väljuta" IDS_DISCONNECT "Katkesta ühendus" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc index 15599ef59d2..030f61fa496 100644 --- a/dll/win32/shell32/lang/fi-FI.rc +++ b/dll/win32/shell32/lang/fi-FI.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc index 3e884987946..da591320759 100644 --- a/dll/win32/shell32/lang/fr-FR.rc +++ b/dll/win32/shell32/lang/fr-FR.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Éjecter" IDS_DISCONNECT "Déconnecter" IDS_OPENFILELOCATION "Ouvrir l'empla&cement du fichier" - IDS_DESKLINK "Bureau (Créer un raccourci)" IDS_SENDTO_MENU "Envo&yer vers"
IDS_MOVEERRORTITLE "Erreur lors du déplacement du fichier ou du dossier" diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc index 820b5861570..ce627168410 100644 --- a/dll/win32/shell32/lang/he-IL.rc +++ b/dll/win32/shell32/lang/he-IL.rc @@ -771,7 +771,6 @@ BEGIN IDS_EJECT "הוצא" IDS_DISCONNECT "נתק" IDS_OPENFILELOCATION "&פתח מיקום קובץ" - IDS_DESKLINK "שולחן העבודה (צור קיצור דרך)" IDS_SENDTO_MENU "&שלח אל"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/hi-IN.rc b/dll/win32/shell32/lang/hi-IN.rc index 6599a48d36f..021128b9dc2 100644 --- a/dll/win32/shell32/lang/hi-IN.rc +++ b/dll/win32/shell32/lang/hi-IN.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "इजेक्ट" IDS_DISCONNECT "डिस्कनेक्ट" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc index 5b9fa0f0cfa..1bda926b3f4 100644 --- a/dll/win32/shell32/lang/hu-HU.rc +++ b/dll/win32/shell32/lang/hu-HU.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Kiadás" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/id-ID.rc b/dll/win32/shell32/lang/id-ID.rc index 800649f20ef..f8490a593f6 100644 --- a/dll/win32/shell32/lang/id-ID.rc +++ b/dll/win32/shell32/lang/id-ID.rc @@ -766,7 +766,6 @@ BEGIN IDS_EJECT "Keluarkan" IDS_DISCONNECT "Putuskan" IDS_OPENFILELOCATION "&Buka lokasi berkas" - IDS_DESKLINK "Desktop (Buat pintasan)" IDS_SENDTO_MENU "Kiri&m Ke"
IDS_MOVEERRORTITLE "Kesalahan memindahkan Berkas atau Folder" diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc index 27b6ffdaba9..ec3a800d2c2 100644 --- a/dll/win32/shell32/lang/it-IT.rc +++ b/dll/win32/shell32/lang/it-IT.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc index 27049132c6a..2de16366853 100644 --- a/dll/win32/shell32/lang/ja-JP.rc +++ b/dll/win32/shell32/lang/ja-JP.rc @@ -766,7 +766,6 @@ BEGIN IDS_EJECT "取り出し" IDS_DISCONNECT "接続の切断" IDS_OPENFILELOCATION "ファイルの場所を開く(&I)" - IDS_DESKLINK "デスクトップ (ショートカットの作成)" IDS_SENDTO_MENU "送る(&N)"
IDS_MOVEERRORTITLE "ファイルまたはフォルダの移動のエラー" diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc index e00bc84dfb3..fe824489892 100644 --- a/dll/win32/shell32/lang/ko-KR.rc +++ b/dll/win32/shell32/lang/ko-KR.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc index 7e6a33b3273..5a92eeb0572 100644 --- a/dll/win32/shell32/lang/nl-NL.rc +++ b/dll/win32/shell32/lang/nl-NL.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc index 5d6e5832eb8..73eefc09b1d 100644 --- a/dll/win32/shell32/lang/no-NO.rc +++ b/dll/win32/shell32/lang/no-NO.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc index 7728d4c2a09..667969a9f71 100644 --- a/dll/win32/shell32/lang/pl-PL.rc +++ b/dll/win32/shell32/lang/pl-PL.rc @@ -775,7 +775,6 @@ BEGIN IDS_EJECT "Wysuń" IDS_DISCONNECT "Odłącz" IDS_OPENFILELOCATION "O&twórz lokalizację pliku" - IDS_DESKLINK "Pulpit (utwórz skrót)" IDS_SENDTO_MENU "Wyślij d&o"
IDS_MOVEERRORTITLE "Błąd przenoszenia pliku lub folderu" diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc index 8ef64f05475..882b4b21dc2 100644 --- a/dll/win32/shell32/lang/pt-BR.rc +++ b/dll/win32/shell32/lang/pt-BR.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc index 1eb2a024814..6b4e32298c9 100644 --- a/dll/win32/shell32/lang/pt-PT.rc +++ b/dll/win32/shell32/lang/pt-PT.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Ejectar" IDS_DISCONNECT "Desligar" IDS_OPENFILELOCATION "Abrir localização do f&icheiro" - IDS_DESKLINK "Área de trabalho (Criar atalho)" IDS_SENDTO_MENU "&Enviar para"
IDS_MOVEERRORTITLE "Erro ao mover pasta ou ficheiro" diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc index 885559fe59a..68d03c714b3 100644 --- a/dll/win32/shell32/lang/ro-RO.rc +++ b/dll/win32/shell32/lang/ro-RO.rc @@ -771,7 +771,6 @@ BEGIN IDS_EJECT "S&coate" IDS_DISCONNECT "Deconectea&ză" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc index 665443078f4..f0662d91c35 100644 --- a/dll/win32/shell32/lang/ru-RU.rc +++ b/dll/win32/shell32/lang/ru-RU.rc @@ -776,7 +776,6 @@ BEGIN IDS_EJECT "Извлечь" IDS_DISCONNECT "Отсоединить" IDS_OPENFILELOCATION "Открыть &расположение объекта" - IDS_DESKLINK "Рабочий стол (создать ярлык)" IDS_SENDTO_MENU "Отправит&ь"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc index 403956196d8..7dd0ae87053 100644 --- a/dll/win32/shell32/lang/sk-SK.rc +++ b/dll/win32/shell32/lang/sk-SK.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc index dbdef73b378..d67feceb0f2 100644 --- a/dll/win32/shell32/lang/sl-SI.rc +++ b/dll/win32/shell32/lang/sl-SI.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc index c249e0b955d..0f8e4754a21 100644 --- a/dll/win32/shell32/lang/sq-AL.rc +++ b/dll/win32/shell32/lang/sq-AL.rc @@ -773,7 +773,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc index 64881741295..f9e8ec731ec 100644 --- a/dll/win32/shell32/lang/sv-SE.rc +++ b/dll/win32/shell32/lang/sv-SE.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc index aef28fb801c..cf5e06c9765 100644 --- a/dll/win32/shell32/lang/tr-TR.rc +++ b/dll/win32/shell32/lang/tr-TR.rc @@ -771,7 +771,6 @@ BEGIN IDS_EJECT "Eject" IDS_DISCONNECT "Disconnect" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc index 3bac38eb8fc..9f9c65e3712 100644 --- a/dll/win32/shell32/lang/uk-UA.rc +++ b/dll/win32/shell32/lang/uk-UA.rc @@ -769,7 +769,6 @@ BEGIN IDS_EJECT "Витягнути" IDS_DISCONNECT "Відключити" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc index 510d6d75bbd..e18e895944f 100644 --- a/dll/win32/shell32/lang/zh-CN.rc +++ b/dll/win32/shell32/lang/zh-CN.rc @@ -777,7 +777,6 @@ BEGIN IDS_EJECT "弹出" IDS_DISCONNECT "断开" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc index af61fb63a45..0e5c707a4c7 100644 --- a/dll/win32/shell32/lang/zh-TW.rc +++ b/dll/win32/shell32/lang/zh-TW.rc @@ -778,7 +778,6 @@ BEGIN IDS_EJECT "退出" IDS_DISCONNECT "中斷" IDS_OPENFILELOCATION "Open f&ile location" - IDS_DESKLINK "Desktop (Create shortcut)" IDS_SENDTO_MENU "Se&nd To"
IDS_MOVEERRORTITLE "Error Moving File or Folder" diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h index 412dec29c58..7cd84a0f4c8 100644 --- a/dll/win32/shell32/shresdef.h +++ b/dll/win32/shell32/shresdef.h @@ -229,7 +229,6 @@ #define IDS_DISCONNECT 340
#define IDS_OPENFILELOCATION 341 -#define IDS_DESKLINK 342 #define IDS_SENDTO_MENU 343
#define IDS_MOVEERRORTITLE 344