https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a48aa2110209aa0d39501…
commit a48aa2110209aa0d39501e281a268890dc6afc7a
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Thu Apr 23 04:19:20 2020 +0900
Commit: GitHub <noreply(a)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(a)gmail.com)
+ * COPYRIGHT: Copyright 2019-2020 Katayama Hirofumi MZ
(katayama.hirofumi.mz(a)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