[SHELL32] Implement 'Open file location' of shortcut files (#2028)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Tue, 12 Nov 2019 07:47:36 +0000 (16:47 +0900)
committerGitHub <noreply@github.com>
Tue, 12 Nov 2019 07:47:36 +0000 (16:47 +0900)
"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

37 files changed:
dll/win32/shell32/CShellLink.cpp
dll/win32/shell32/CShellLink.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 3d7051d..8883e80 100644 (file)
@@ -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) )
index dac5369..7ad131c 100644 (file)
@@ -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();
index ac08343..e61b6c6 100644 (file)
@@ -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"
index 1a4ba5b..b2e25f9 100644 (file)
@@ -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"
index eb4da55..b5f4c2c 100644 (file)
@@ -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"
index 445c85a..7a06377 100644 (file)
@@ -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"
index 0061ff7..f0145f3 100644 (file)
@@ -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."
index 0240442..aaf9db3 100644 (file)
@@ -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"
index 80ae4fd..7eb8229 100644 (file)
@@ -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"
index 3e049ea..bce8bc3 100644 (file)
@@ -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"
index 95c5799..1464b4d 100644 (file)
@@ -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"
index 295b6f3..e2e8cf4 100644 (file)
@@ -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"
index c3d16d9..f6cd13e 100644 (file)
@@ -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"
index b28d877..58464c8 100644 (file)
@@ -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"
index ff7da47..9e63d54 100644 (file)
@@ -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"
index 76e7cc2..6903fe2 100644 (file)
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "पैस्ट"
     IDS_EJECT "इजेक्ट"
     IDS_DISCONNECT "डिस्कनेक्ट"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "फ़ोल्डर '%1' बनाने में असमर्थ"
     IDS_CREATEFOLDER_CAPTION "फ़ोल्डर बनाने में असमर्थ"
index d840240..037d7f8 100644 (file)
@@ -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"
index 4e9a7c6..4d5abb5 100644 (file)
@@ -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"
index a109c0d..fa5cd0d 100644 (file)
@@ -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"
index ac55db8..56a7ca9 100644 (file)
@@ -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 "フォルダを作成できません"
index 3647553..4239b7e 100644 (file)
@@ -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"
index db458b1..cb9ec3e 100644 (file)
@@ -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"
index 8dfeb90..16c0a43 100644 (file)
@@ -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"
index 66461af..38724ea 100644 (file)
@@ -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"
index 2e9abdc..035a4ae 100644 (file)
@@ -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"
index 26e26d9..685f86c 100644 (file)
@@ -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"
index a532816..5d6c56c 100644 (file)
@@ -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"
index 2072afb..36002d8 100644 (file)
@@ -776,6 +776,7 @@ BEGIN
     IDS_PASTE "Вставить"
     IDS_EJECT "Извлечь"
     IDS_DISCONNECT "Отсоединить"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Невозможно создать папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Невозможно создать папку"
index 96f9637..165f210 100644 (file)
@@ -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"
index 01c5658..678c5f5 100644 (file)
@@ -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"
index a7718e6..f65bf86 100644 (file)
@@ -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"
index 029468c..e17328e 100644 (file)
@@ -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"
index 6b49137..bc6addf 100644 (file)
@@ -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"
index 96b20ad..97ec055 100644 (file)
@@ -769,6 +769,7 @@ BEGIN
     IDS_PASTE "Вставити"
     IDS_EJECT "Витягнути"
     IDS_DISCONNECT "Відключити"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "Не вдалося створити папку '%1'"
     IDS_CREATEFOLDER_CAPTION "Не вдалося створити папку"
index b8881df..f3debf5 100644 (file)
@@ -777,6 +777,7 @@ BEGIN
     IDS_PASTE "贴上"
     IDS_EJECT "弹出"
     IDS_DISCONNECT "断开"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "无法创建文件夹 '%1'"
     IDS_CREATEFOLDER_CAPTION "无法创建文件夹"
index f3d3503..31faf69 100644 (file)
@@ -778,6 +778,7 @@ BEGIN
     IDS_PASTE "插入"
     IDS_EJECT "退出"
     IDS_DISCONNECT "中斷"
+    IDS_OPENFILELOCATION "Open f&ile location"
 
     IDS_CREATEFOLDER_DENIED "無法建立資料夾 '%1'"
     IDS_CREATEFOLDER_CAPTION "無法建立資料夾"
index 766f32f..2b729d6 100644 (file)
 #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 */