https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c0f340bca567c5ae6ab4906459b62e2ef26f226f

commit c0f340bca567c5ae6ab4906459b62e2ef26f226f
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Tue Nov 12 16:47:36 2019 +0900
Commit:     GitHub <[email protected]>
CommitDate: Tue Nov 12 16:47:36 2019 +0900

    [SHELL32] Implement 'Open file location' of shortcut files (#2028)
    
    "Open file location" is a feature to open the location of the target of a 
shortcut file.
    Ideally we should probably use SHOpenFolderAndSelectItems here, but that is 
not 100% implemented in ros yet... CORE-12770
---
 dll/win32/shell32/CShellLink.cpp | 67 +++++++++++++++++++++++++++++++++-------
 dll/win32/shell32/CShellLink.h   | 13 ++++++--
 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     |  2 ++
 37 files changed, 101 insertions(+), 15 deletions(-)

diff --git a/dll/win32/shell32/CShellLink.cpp b/dll/win32/shell32/CShellLink.cpp
index 3d7051d9699..8883e801c69 100644
--- a/dll/win32/shell32/CShellLink.cpp
+++ b/dll/win32/shell32/CShellLink.cpp
@@ -278,9 +278,9 @@ CShellLink::CShellLink()
     m_pDBList = NULL;
     m_bInInit = FALSE;
     m_hIcon = NULL;
+    m_idCmdFirst = 0;
 
     m_sLinkPath = NULL;
-    m_iIdOpen = -1;
 
     /**/sProduct = sComponent = NULL;/**/
 }
@@ -2578,7 +2578,9 @@ HRESULT STDMETHODCALLTYPE 
CShellLink::Initialize(PCIDLIST_ABSOLUTE pidlFolder, I
 
 HRESULT STDMETHODCALLTYPE CShellLink::QueryContextMenu(HMENU hMenu, UINT 
indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
 {
-    int id = 1;
+    INT id = 0;
+
+    m_idCmdFirst = idCmdFirst;
 
     TRACE("%p %p %u %u %u %u\n", this,
           hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
@@ -2586,31 +2588,54 @@ HRESULT STDMETHODCALLTYPE 
CShellLink::QueryContextMenu(HMENU hMenu, UINT indexMe
     if (!hMenu)
         return E_INVALIDARG;
 
-    WCHAR wszOpen[20];
-    if (!LoadStringW(shell32_hInstance, IDS_OPEN_VERB, wszOpen, 
_countof(wszOpen)))
-        *wszOpen = L'\0';
+    CStringW strOpen(MAKEINTRESOURCEW(IDS_OPEN_VERB));
+    CStringW strOpenFileLoc(MAKEINTRESOURCEW(IDS_OPENFILELOCATION));
 
     MENUITEMINFOW mii;
     ZeroMemory(&mii, sizeof(mii));
     mii.cbSize = sizeof(mii);
     mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
-    mii.dwTypeData = wszOpen;
+    mii.dwTypeData = strOpen.GetBuffer();
     mii.cch = wcslen(mii.dwTypeData);
     mii.wID = idCmdFirst + id++;
     mii.fState = MFS_DEFAULT | MFS_ENABLED;
     mii.fType = MFT_STRING;
-    if (!InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
+    if (!InsertMenuItemW(hMenu, indexMenu++, TRUE, &mii))
+        return E_FAIL;
+
+    mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
+    mii.dwTypeData = strOpenFileLoc.GetBuffer();
+    mii.cch = wcslen(mii.dwTypeData);
+    mii.wID = idCmdFirst + id++;
+    mii.fState = MFS_ENABLED;
+    mii.fType = MFT_STRING;
+    if (!InsertMenuItemW(hMenu, indexMenu++, TRUE, &mii))
         return E_FAIL;
-    m_iIdOpen = 1;
+
+    UNREFERENCED_PARAMETER(indexMenu);
 
     return MAKE_HRESULT(SEVERITY_SUCCESS, 0, id);
 }
 
-HRESULT STDMETHODCALLTYPE CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO 
lpici)
+HRESULT CShellLink::DoOpenFileLocation()
 {
-    LPWSTR args = NULL;
-    LPWSTR path = NULL;
+    WCHAR szParams[MAX_PATH + 64];
+    StringCbPrintfW(szParams, sizeof(szParams), L"/select,%s", m_sPath);
+
+    INT_PTR ret;
+    ret = reinterpret_cast<INT_PTR>(ShellExecuteW(NULL, NULL, L"explorer.exe", 
szParams,
+                                                  NULL, 
m_Header.nShowCommand));
+    if (ret <= 32)
+    {
+        ERR("ret: %08lX\n", ret);
+        return E_FAIL;
+    }
 
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO 
lpici)
+{
     TRACE("%p %p\n", this, lpici);
 
     if (lpici->cbSize < sizeof(CMINVOKECOMMANDINFO))
@@ -2627,7 +2652,25 @@ HRESULT STDMETHODCALLTYPE 
CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
         return hr;
     }
 
-    path = strdupW(m_sPath);
+    UINT idCmd = LOWORD(lpici->lpVerb);
+    TRACE("idCmd: %d\n", idCmd);
+
+    switch (idCmd)
+    {
+    case IDCMD_OPEN:
+        return DoOpen(lpici);
+    case IDCMD_OPENFILELOCATION:
+        return DoOpenFileLocation();
+    default:
+        return E_NOTIMPL;
+    }
+}
+
+HRESULT CShellLink::DoOpen(LPCMINVOKECOMMANDINFO lpici)
+{
+    HRESULT hr;
+    LPWSTR args = NULL;
+    LPWSTR path = strdupW(m_sPath);
 
     if ( lpici->cbSize == sizeof(CMINVOKECOMMANDINFOEX) &&
         (lpici->fMask & CMIC_MASK_UNICODE) )
diff --git a/dll/win32/shell32/CShellLink.h b/dll/win32/shell32/CShellLink.h
index dac5369fedf..7ad131c0284 100644
--- a/dll/win32/shell32/CShellLink.h
+++ b/dll/win32/shell32/CShellLink.h
@@ -51,16 +51,20 @@ public:
     /* Link file formats */
 
     #include "pshpack1.h"
-
     struct volume_info
     {
         DWORD type;
         DWORD serial;
         WCHAR label[12];  /* assume 8.3 */
     };
-
     #include "poppack.h"
 
+    enum IDCMD
+    {
+        IDCMD_OPEN = 0,
+        IDCMD_OPENFILELOCATION
+    };
+
 private:
     /* Cached link header */
     SHELL_LINK_HEADER m_Header;
@@ -83,13 +87,13 @@ private:
     LPDBLIST      m_pDBList; /* Optional data block list (in the extra data 
section) */
     BOOL          m_bInInit;    // in initialization or not
     HICON         m_hIcon;
+    UINT          m_idCmdFirst;
 
     /* Pointers to strings inside Logo3/Darwin info blocks, cached for debug 
info purposes only */
     LPWSTR sProduct;
     LPWSTR sComponent;
 
     LPWSTR        m_sLinkPath;
-    INT           m_iIdOpen;     /* ID of the "Open" entry in the context menu 
*/
 
     CComPtr<IUnknown>    m_site;
     CComPtr<IDropTarget> m_DropTarget;
@@ -102,6 +106,9 @@ private:
     HRESULT SetTargetFromPIDLOrPath(LPCITEMIDLIST pidl, LPCWSTR pszFile);
     HICON CreateShortcutIcon(LPCWSTR wszIconPath, INT IconIndex);
 
+    HRESULT DoOpen(LPCMINVOKECOMMANDINFO lpici);
+    HRESULT DoOpenFileLocation();
+
 public:
     CShellLink();
     ~CShellLink();
diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc
index ac083431deb..e61b6c675fb 100644
--- a/dll/win32/shell32/lang/bg-BG.rc
+++ b/dll/win32/shell32/lang/bg-BG.rc
@@ -770,6 +770,7 @@ BEGIN
     IDS_PASTE "Вмъкване"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc
index 1a4ba5be874..b2e25f93076 100644
--- a/dll/win32/shell32/lang/ca-ES.rc
+++ b/dll/win32/shell32/lang/ca-ES.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc
index eb4da556af9..b5f4c2c2616 100644
--- a/dll/win32/shell32/lang/cs-CZ.rc
+++ b/dll/win32/shell32/lang/cs-CZ.rc
@@ -775,6 +775,7 @@ BEGIN
     IDS_PASTE "Vložit"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Složku '%1' nebylo možné vytvořit"
     IDS_CREATEFOLDER_CAPTION "Složku nebylo možné vytvořit"
diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc
index 445c85a043e..7a063778cab 100644
--- a/dll/win32/shell32/lang/da-DK.rc
+++ b/dll/win32/shell32/lang/da-DK.rc
@@ -775,6 +775,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc
index 0061ff76d81..f0145f348be 100644
--- a/dll/win32/shell32/lang/de-DE.rc
+++ b/dll/win32/shell32/lang/de-DE.rc
@@ -770,6 +770,7 @@ BEGIN
     IDS_PASTE "Einfügen"
     IDS_EJECT "Auswerfen"
     IDS_DISCONNECT "Trennen"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED " Der Ordner kann nicht erstellt werden '%1'"
     IDS_CREATEFOLDER_CAPTION " Der Ordner kann nicht erstellt werden."
diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc
index 0240442978f..aaf9db3c3b7 100644
--- a/dll/win32/shell32/lang/el-GR.rc
+++ b/dll/win32/shell32/lang/el-GR.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc
index 80ae4fdfb72..7eb8229884e 100644
--- a/dll/win32/shell32/lang/en-GB.rc
+++ b/dll/win32/shell32/lang/en-GB.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc
index 3e049ea5877..bce8bc31278 100644
--- a/dll/win32/shell32/lang/en-US.rc
+++ b/dll/win32/shell32/lang/en-US.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc
index 95c57999784..1464b4d14f0 100644
--- a/dll/win32/shell32/lang/es-ES.rc
+++ b/dll/win32/shell32/lang/es-ES.rc
@@ -777,6 +777,7 @@ BEGIN
     IDS_PASTE "Insertar"
     IDS_EJECT "Extraer"
     IDS_DISCONNECT "Desconectar"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "No se pudo crear la carpeta '%1'"
     IDS_CREATEFOLDER_CAPTION "No se pudo crear la carpeta"
diff --git a/dll/win32/shell32/lang/et-EE.rc b/dll/win32/shell32/lang/et-EE.rc
index 295b6f3a4a8..e2e8cf41e28 100644
--- a/dll/win32/shell32/lang/et-EE.rc
+++ b/dll/win32/shell32/lang/et-EE.rc
@@ -776,6 +776,7 @@ BEGIN
     IDS_PASTE "Kleebi"
     IDS_EJECT "Väljuta"
     IDS_DISCONNECT "Katkesta ühendus"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Ei saa luua kausta '%1'"
     IDS_CREATEFOLDER_CAPTION "Ei saa kausta luua"
diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc
index c3d16d96d90..f6cd13e6878 100644
--- a/dll/win32/shell32/lang/fi-FI.rc
+++ b/dll/win32/shell32/lang/fi-FI.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc
index b28d8770a58..58464c856ff 100644
--- a/dll/win32/shell32/lang/fr-FR.rc
+++ b/dll/win32/shell32/lang/fr-FR.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Insérer"
     IDS_EJECT "Éjecter"
     IDS_DISCONNECT "Déconnecter"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Impossible de créer le dossier '%1'"
     IDS_CREATEFOLDER_CAPTION "Impossible de créer un dossier"
diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc
index ff7da470c61..9e63d54b428 100644
--- a/dll/win32/shell32/lang/he-IL.rc
+++ b/dll/win32/shell32/lang/he-IL.rc
@@ -771,6 +771,7 @@ BEGIN
     IDS_PASTE "הכנס"
     IDS_EJECT "הוצא"
     IDS_DISCONNECT "נתק"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/hi-IN.rc b/dll/win32/shell32/lang/hi-IN.rc
index 76e7cc2a6d0..6903fe2372e 100644
--- a/dll/win32/shell32/lang/hi-IN.rc
+++ b/dll/win32/shell32/lang/hi-IN.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "पैस्ट"
     IDS_EJECT "इजेक्ट"
     IDS_DISCONNECT "डिस्कनेक्ट"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "फ़ोल्डर '%1' बनाने में असमर्थ"
     IDS_CREATEFOLDER_CAPTION "फ़ोल्डर बनाने में असमर्थ"
diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc
index d840240b990..037d7f8e4c9 100644
--- a/dll/win32/shell32/lang/hu-HU.rc
+++ b/dll/win32/shell32/lang/hu-HU.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/id-ID.rc b/dll/win32/shell32/lang/id-ID.rc
index 4e9a7c654e2..4d5abb5d14e 100644
--- a/dll/win32/shell32/lang/id-ID.rc
+++ b/dll/win32/shell32/lang/id-ID.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Tempel"
     IDS_EJECT "Keluarkan"
     IDS_DISCONNECT "Putuskan"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Tidak bisa membuat folder folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Tidak bisa membuat folder"
diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc
index a109c0d74fc..fa5cd0d287e 100644
--- a/dll/win32/shell32/lang/it-IT.rc
+++ b/dll/win32/shell32/lang/it-IT.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Inserisci"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc
index ac55db842ff..56a7ca99a3d 100644
--- a/dll/win32/shell32/lang/ja-JP.rc
+++ b/dll/win32/shell32/lang/ja-JP.rc
@@ -766,6 +766,7 @@ BEGIN
     IDS_PASTE "挿入"
     IDS_EJECT "取り出し"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "フォルダ '%1' を作成できません"
     IDS_CREATEFOLDER_CAPTION "フォルダを作成できません"
diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc
index 3647553a1f0..4239b7e3da5 100644
--- a/dll/win32/shell32/lang/ko-KR.rc
+++ b/dll/win32/shell32/lang/ko-KR.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc
index db458b1b9e1..cb9ec3ef3e9 100644
--- a/dll/win32/shell32/lang/nl-NL.rc
+++ b/dll/win32/shell32/lang/nl-NL.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc
index 8dfeb901bba..16c0a4333ea 100644
--- a/dll/win32/shell32/lang/no-NO.rc
+++ b/dll/win32/shell32/lang/no-NO.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Sett inn"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc
index 66461af8b7b..38724ea0bbd 100644
--- a/dll/win32/shell32/lang/pl-PL.rc
+++ b/dll/win32/shell32/lang/pl-PL.rc
@@ -774,6 +774,7 @@ BEGIN
     IDS_PASTE "Włóż"
     IDS_EJECT "Wysuń"
     IDS_DISCONNECT "Odłącz"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Nie można utworzyć folderu '%1'"
     IDS_CREATEFOLDER_CAPTION "Nie można utworzyć folderu"
diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc
index 2e9abdc3702..035a4ae514a 100644
--- a/dll/win32/shell32/lang/pt-BR.rc
+++ b/dll/win32/shell32/lang/pt-BR.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Inserir"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc
index 26e26d915cf..685f86cf1bc 100644
--- a/dll/win32/shell32/lang/pt-PT.rc
+++ b/dll/win32/shell32/lang/pt-PT.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Inserir"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Desligar"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Impossivel de criar pasta '%1'"
     IDS_CREATEFOLDER_CAPTION "Impossivel de criar pasta"
diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc
index a53281668b8..5d6c56c8a7c 100644
--- a/dll/win32/shell32/lang/ro-RO.rc
+++ b/dll/win32/shell32/lang/ro-RO.rc
@@ -771,6 +771,7 @@ BEGIN
     IDS_PASTE "&Lipește"
     IDS_EJECT "S&coate"
     IDS_DISCONNECT "Deconectea&ză"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Nu poate fi creat un dosar cu numele „%1”"
     IDS_CREATEFOLDER_CAPTION "Nu poate fi creat dosar"
diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc
index 2072afb9558..36002d87d62 100644
--- a/dll/win32/shell32/lang/ru-RU.rc
+++ b/dll/win32/shell32/lang/ru-RU.rc
@@ -776,6 +776,7 @@ BEGIN
     IDS_PASTE "Вставить"
     IDS_EJECT "Извлечь"
     IDS_DISCONNECT "Отсоединить"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Невозможно создать папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Невозможно создать папку"
diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc
index 96f9637d067..165f210a79d 100644
--- a/dll/win32/shell32/lang/sk-SK.rc
+++ b/dll/win32/shell32/lang/sk-SK.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Vložiť"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc
index 01c5658256d..678c5f5f7be 100644
--- a/dll/win32/shell32/lang/sl-SI.rc
+++ b/dll/win32/shell32/lang/sl-SI.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Paste"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc
index a7718e6dab9..f65bf86b3f2 100644
--- a/dll/win32/shell32/lang/sq-AL.rc
+++ b/dll/win32/shell32/lang/sq-AL.rc
@@ -773,6 +773,7 @@ BEGIN
     IDS_PASTE "Fut"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
     IDS_CREATEFOLDER_CAPTION "Unable to create folder"
diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc
index 029468c5ea6..e17328ecc79 100644
--- a/dll/win32/shell32/lang/sv-SE.rc
+++ b/dll/win32/shell32/lang/sv-SE.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Klistra in"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Kunde inte skapa mappen '%1'"
     IDS_CREATEFOLDER_CAPTION "Kunde inte skapa mapp"
diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc
index 6b491372bf9..bc6addfed2b 100644
--- a/dll/win32/shell32/lang/tr-TR.rc
+++ b/dll/win32/shell32/lang/tr-TR.rc
@@ -771,6 +771,7 @@ BEGIN
     IDS_PASTE "Yapıştır"
     IDS_EJECT "Eject"
     IDS_DISCONNECT "Disconnect"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED """%1"" dizini oluşturulamıyor."
     IDS_CREATEFOLDER_CAPTION "Dizin Oluşturulamıyor"
diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc
index 96b20ade200..97ec05510e7 100644
--- a/dll/win32/shell32/lang/uk-UA.rc
+++ b/dll/win32/shell32/lang/uk-UA.rc
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Вставити"
     IDS_EJECT "Витягнути"
     IDS_DISCONNECT "Відключити"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Не вдалося створити папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Не вдалося створити папку"
diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc
index b8881df8db0..f3debf50826 100644
--- a/dll/win32/shell32/lang/zh-CN.rc
+++ b/dll/win32/shell32/lang/zh-CN.rc
@@ -777,6 +777,7 @@ BEGIN
     IDS_PASTE "贴上"
     IDS_EJECT "弹出"
     IDS_DISCONNECT "断开"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "无法创建文件夹 '%1'"
     IDS_CREATEFOLDER_CAPTION "无法创建文件夹"
diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc
index f3d35038a32..31faf69e845 100644
--- a/dll/win32/shell32/lang/zh-TW.rc
+++ b/dll/win32/shell32/lang/zh-TW.rc
@@ -778,6 +778,7 @@ BEGIN
     IDS_PASTE "插入"
     IDS_EJECT "退出"
     IDS_DISCONNECT "中斷"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "無法建立資料夾 '%1'"
     IDS_CREATEFOLDER_CAPTION "無法建立資料夾"
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index 766f32f07dc..2b729d6a2ea 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -227,6 +227,8 @@
 #define IDS_EJECT                339
 #define IDS_DISCONNECT           340
 
+#define IDS_OPENFILELOCATION     341
+
 #define IDS_MENU_EMPTY           34561
 
 /* Note: those strings are referenced from the registry */

Reply via email to