[SENDMAIL][ZIPFLDR][MYDOCS] Fix creation of SendTo files (#2616)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Wed, 22 Apr 2020 19:19:20 +0000 (04:19 +0900)
committerGitHub <noreply@github.com>
Wed, 22 Apr 2020 19:19:20 +0000 (04:19 +0900)
- Improve and move SendTo files creation code and timing.
- Delete IDS_DESKLINK of shell32.
- Add IDS_DESKLINK into sendmail.
CORE-16924

52 files changed:
dll/shellext/mydocs/mydocs.cpp
dll/shellext/sendmail/lang/de-DE.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/en-US.rc
dll/shellext/sendmail/lang/es-ES.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/fr-FR.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/he-IL.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/id-ID.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/ja-JP.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/pl-PL.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/pt-PT.rc [new file with mode: 0644]
dll/shellext/sendmail/lang/ru-RU.rc [new file with mode: 0644]
dll/shellext/sendmail/resource.h
dll/shellext/sendmail/sendmail.cpp
dll/shellext/sendmail/sendmail.rc
dll/shellext/zipfldr/zipfldr.cpp
dll/win32/shell32/CSendToMenu.cpp
dll/win32/shell32/CSendToMenu.h
dll/win32/shell32/lang/bg-BG.rc
dll/win32/shell32/lang/ca-ES.rc
dll/win32/shell32/lang/cs-CZ.rc
dll/win32/shell32/lang/da-DK.rc
dll/win32/shell32/lang/de-DE.rc
dll/win32/shell32/lang/el-GR.rc
dll/win32/shell32/lang/en-GB.rc
dll/win32/shell32/lang/en-US.rc
dll/win32/shell32/lang/es-ES.rc
dll/win32/shell32/lang/et-EE.rc
dll/win32/shell32/lang/fi-FI.rc
dll/win32/shell32/lang/fr-FR.rc
dll/win32/shell32/lang/he-IL.rc
dll/win32/shell32/lang/hi-IN.rc
dll/win32/shell32/lang/hu-HU.rc
dll/win32/shell32/lang/id-ID.rc
dll/win32/shell32/lang/it-IT.rc
dll/win32/shell32/lang/ja-JP.rc
dll/win32/shell32/lang/ko-KR.rc
dll/win32/shell32/lang/nl-NL.rc
dll/win32/shell32/lang/no-NO.rc
dll/win32/shell32/lang/pl-PL.rc
dll/win32/shell32/lang/pt-BR.rc
dll/win32/shell32/lang/pt-PT.rc
dll/win32/shell32/lang/ro-RO.rc
dll/win32/shell32/lang/ru-RU.rc
dll/win32/shell32/lang/sk-SK.rc
dll/win32/shell32/lang/sl-SI.rc
dll/win32/shell32/lang/sq-AL.rc
dll/win32/shell32/lang/sv-SE.rc
dll/win32/shell32/lang/tr-TR.rc
dll/win32/shell32/lang/uk-UA.rc
dll/win32/shell32/lang/zh-CN.rc
dll/win32/shell32/lang/zh-TW.rc
dll/win32/shell32/shresdef.h

index c5954c1..1268510 100644 (file)
@@ -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 (file)
index 0000000..d470938
--- /dev/null
@@ -0,0 +1,7 @@
+LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
+
+STRINGTABLE
+{
+    IDS_DESKLINK, "Desktop (Verknüpfung erstellen)"
+    IDS_SHORTCUT, "Shortcut to %s"
+}
index 20ec907..c5811e7 100644 (file)
@@ -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 (file)
index 0000000..d6a6382
--- /dev/null
@@ -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 (file)
index 0000000..a5a6557
--- /dev/null
@@ -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 (file)
index 0000000..37ae631
--- /dev/null
@@ -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 (file)
index 0000000..b88a260
--- /dev/null
@@ -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 (file)
index 0000000..647041d
--- /dev/null
@@ -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 (file)
index 0000000..633bb81
--- /dev/null
@@ -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 (file)
index 0000000..19d03b9
--- /dev/null
@@ -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 (file)
index 0000000..aa6e247
--- /dev/null
@@ -0,0 +1,7 @@
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+STRINGTABLE
+{
+    IDS_DESKLINK, "Рабочий стол (создать ярлык)"
+    IDS_SHORTCUT, "Shortcut to %s"
+}
index 72b6965..7b13f18 100644 (file)
@@ -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
index 6cdaae9..a1de97e 100644 (file)
@@ -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);
     }
index 8b4d4f7..5563618 100644 (file)
@@ -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
index eecb1ac..5dee2d1 100644 (file)
@@ -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;
 }
 
index fc4a224..9e9fbe8 100644 (file)
@@ -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();
index 2156f1e..2f59319 100644 (file)
@@ -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);
index 61590e6..eb4278b 100644 (file)
@@ -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"
index b046ec1..4f9c535 100644 (file)
@@ -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"
index 49edf7b..a5dfe14 100644 (file)
@@ -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"
index 73cb4c7..35d470c 100644 (file)
@@ -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"
index ed353d9..93e5687 100644 (file)
@@ -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"
index d2f9abc..8457e34 100644 (file)
@@ -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"
index d778623..e9b4f10 100644 (file)
@@ -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"
index dc5bc30..692d30c 100644 (file)
@@ -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"
index 7629f98..4f455eb 100644 (file)
@@ -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"
index c6e41d8..e991c45 100644 (file)
@@ -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"
index 15599ef..030f61f 100644 (file)
@@ -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"
index 3e88498..da59132 100644 (file)
@@ -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"
index 820b586..ce62716 100644 (file)
@@ -771,7 +771,6 @@ BEGIN
     IDS_EJECT "הוצא"
     IDS_DISCONNECT "נתק"
     IDS_OPENFILELOCATION "&פתח מיקום קובץ"
-    IDS_DESKLINK "שולחן העבודה (צור קיצור דרך)"
     IDS_SENDTO_MENU "&שלח אל"
 
     IDS_MOVEERRORTITLE "Error Moving File or Folder"
index 6599a48..021128b 100644 (file)
@@ -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"
index 5b9fa0f..1bda926 100644 (file)
@@ -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"
index 800649f..f8490a5 100644 (file)
@@ -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"
index 27b6ffd..ec3a800 100644 (file)
@@ -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"
index 2704913..2de1636 100644 (file)
@@ -766,7 +766,6 @@ BEGIN
     IDS_EJECT "取り出し"
     IDS_DISCONNECT "接続の切断"
     IDS_OPENFILELOCATION "ファイルの場所を開く(&I)"
-    IDS_DESKLINK "デスクトップ (ショートカットの作成)"
     IDS_SENDTO_MENU "送る(&N)"
 
     IDS_MOVEERRORTITLE "ファイルまたはフォルダの移動のエラー"
index e00bc84..fe82448 100644 (file)
@@ -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"
index 7e6a33b..5a92eeb 100644 (file)
@@ -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"
index 5d6e583..73eefc0 100644 (file)
@@ -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"
index 7728d4c..667969a 100644 (file)
@@ -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"
index 8ef64f0..882b4b2 100644 (file)
@@ -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"
index 1eb2a02..6b4e322 100644 (file)
@@ -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"
index 885559f..68d03c7 100644 (file)
@@ -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"
index 6654430..f0662d9 100644 (file)
@@ -776,7 +776,6 @@ BEGIN
     IDS_EJECT "Извлечь"
     IDS_DISCONNECT "Отсоединить"
     IDS_OPENFILELOCATION "Открыть &расположение объекта"
-    IDS_DESKLINK "Рабочий стол (создать ярлык)"
     IDS_SENDTO_MENU "Отправит&ь"
 
     IDS_MOVEERRORTITLE "Error Moving File or Folder"
index 4039561..7dd0ae8 100644 (file)
@@ -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"
index dbdef73..d67fece 100644 (file)
@@ -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"
index c249e0b..0f8e475 100644 (file)
@@ -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"
index 6488174..f9e8ec7 100644 (file)
@@ -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"
index aef28fb..cf5e06c 100644 (file)
@@ -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"
index 3bac38e..9f9c65e 100644 (file)
@@ -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"
index 510d6d7..e18e895 100644 (file)
@@ -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"
index af61fb6..0e5c707 100644 (file)
@@ -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"
index 412dec2..7cd84a0 100644 (file)
 #define IDS_DISCONNECT           340
 
 #define IDS_OPENFILELOCATION     341
-#define IDS_DESKLINK             342
 #define IDS_SENDTO_MENU          343
 
 #define IDS_MOVEERRORTITLE       344