mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
[SHELL32] Copy as path shell extension (#6701)
* Added Copy as path menu extension --------- Co-authored-by: Thamatip Chitpong <weedgamer131@gmail.com>
This commit is contained in:
parent
91be8bf0a1
commit
9238a1762f
43 changed files with 243 additions and 0 deletions
|
@ -436,3 +436,145 @@ CCopyMoveToMenu::GetSite(REFIID riid, void **ppvSite)
|
|||
|
||||
return m_pSite->QueryInterface(riid, ppvSite);
|
||||
}
|
||||
|
||||
static DWORD
|
||||
SetClipboard(UINT cf, const void* data, SIZE_T size)
|
||||
{
|
||||
BOOL succ = FALSE;
|
||||
HGLOBAL handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, size);
|
||||
if (handle)
|
||||
{
|
||||
LPVOID clipdata = GlobalLock(handle);
|
||||
if (clipdata)
|
||||
{
|
||||
CopyMemory(clipdata, data, size);
|
||||
GlobalUnlock(handle);
|
||||
if (OpenClipboard(NULL))
|
||||
{
|
||||
EmptyClipboard();
|
||||
succ = SetClipboardData(cf, handle) != NULL;
|
||||
CloseClipboard();
|
||||
}
|
||||
}
|
||||
if (!succ)
|
||||
{
|
||||
GlobalFree(handle);
|
||||
}
|
||||
}
|
||||
return succ ? ERROR_SUCCESS : GetLastError();
|
||||
}
|
||||
|
||||
static DWORD
|
||||
SetClipboardFromString(LPCWSTR str)
|
||||
{
|
||||
SIZE_T cch = lstrlenW(str) + 1, size = cch * sizeof(WCHAR);
|
||||
if (size > cch)
|
||||
return SetClipboard(CF_UNICODETEXT, str, size);
|
||||
else
|
||||
return ERROR_BUFFER_OVERFLOW;
|
||||
}
|
||||
|
||||
static void
|
||||
AppendToPathList(CStringW &paths, LPCWSTR path, DWORD index)
|
||||
{
|
||||
if (index)
|
||||
paths += L"\r\n";
|
||||
LPCWSTR quote = StrChrW(path, L' ');
|
||||
if (quote)
|
||||
paths += L'\"';
|
||||
paths += path;
|
||||
if (quote)
|
||||
paths += L'\"';
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
CCopyAsPathMenu::Drop(IDataObject *pdto, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect)
|
||||
{
|
||||
CStringW paths;
|
||||
DWORD i, count;
|
||||
#if 0
|
||||
CComPtr<IShellItemArray> array;
|
||||
HRESULT hr = SHCreateShellItemArrayFromDataObject(pdto, IID_PPV_ARG(IShellItemArray, &array));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
for (i = 0, array->GetCount(&count); i < count && SUCCEEDED(hr); ++i)
|
||||
{
|
||||
CComPtr<IShellItem> item;
|
||||
hr = array->GetItemAt(i, &item);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
CComHeapPtr<WCHAR> path;
|
||||
hr = item->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, &path);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
AppendToPathList(paths, path, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
FIXME("Implement and use SHCreateShellItemArrayFromDataObject\n");
|
||||
CDataObjectHIDA pCIDA(pdto);
|
||||
HRESULT hr = pCIDA.hr();
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
for (i = 0, count = pCIDA->cidl; i < count && SUCCEEDED(hr); ++i)
|
||||
{
|
||||
PCUIDLIST_ABSOLUTE folder = HIDA_GetPIDLFolder(pCIDA);
|
||||
PCUIDLIST_RELATIVE item = HIDA_GetPIDLItem(pCIDA, i);
|
||||
CComHeapPtr<ITEMIDLIST> full;
|
||||
hr = SHILCombine(folder, item, &full);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
PCUITEMID_CHILD child;
|
||||
CComPtr<IShellFolder> sf;
|
||||
hr = SHBindToParent(full, IID_PPV_ARG(IShellFolder, &sf), &child);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
STRRET strret;
|
||||
hr = sf->GetDisplayNameOf(child, SHGDN_FORPARSING, &strret);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
CComHeapPtr<WCHAR> path;
|
||||
hr = StrRetToStrW(&strret, child, &path);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
AppendToPathList(paths, path, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FORMATETC fmte = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
|
||||
STGMEDIUM stgm;
|
||||
hr = pdto->GetData(&fmte, &stgm);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
for (i = 0, count = DragQueryFileW((HDROP)stgm.hGlobal, -1, NULL, 0); i < count && SUCCEEDED(hr); ++i)
|
||||
{
|
||||
WCHAR path[MAX_PATH];
|
||||
if (DragQueryFileW((HDROP)stgm.hGlobal, i, path, _countof(path)))
|
||||
{
|
||||
AppendToPathList(paths, path, i);
|
||||
}
|
||||
}
|
||||
ReleaseStgMedium(&stgm);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
DWORD err = SetClipboardFromString(paths);
|
||||
hr = HRESULT_FROM_WIN32(err);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
*pdwEffect &= DROPEFFECT_COPY;
|
||||
else
|
||||
*pdwEffect &= DROPEFFECT_NONE;
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -109,3 +109,35 @@ public:
|
|||
UINT GetFileOp() const override { return FO_MOVE; }
|
||||
LPCSTR GetVerb() const override { return "moveto"; }
|
||||
};
|
||||
|
||||
class CCopyAsPathMenu
|
||||
: public CComCoClass<CCopyAsPathMenu, &CLSID_CopyAsPathMenu>
|
||||
, public CComObjectRootEx<CComMultiThreadModelNoCS>
|
||||
, public IDropTarget
|
||||
{
|
||||
public:
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_COPYASPATHMENU)
|
||||
DECLARE_NOT_AGGREGATABLE(CCopyAsPathMenu)
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(CCopyAsPathMenu)
|
||||
COM_INTERFACE_ENTRY_IID(IID_IDropTarget, IDropTarget)
|
||||
END_COM_MAP()
|
||||
|
||||
// IDropTarget
|
||||
STDMETHODIMP DragEnter(IDataObject *pdto, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect)
|
||||
{
|
||||
*pdwEffect &= DROPEFFECT_COPY;
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP DragOver(DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect)
|
||||
{
|
||||
*pdwEffect &= DROPEFFECT_COPY;
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP DragLeave()
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP Drop(IDataObject *pdto, DWORD grfKeyState, POINTL ptl, DWORD *pdwEffect);
|
||||
};
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -805,6 +805,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -798,6 +798,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Trennen"
|
||||
IDS_OPENFILELOCATION "Date&ipfad öffnen"
|
||||
IDS_SENDTO_MENU "S&enden an"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Fehler beim Verschieben der Datei/des Ordners"
|
||||
IDS_COPYERRORTITLE "Fehler beim Kopieren der Datei/des Ordners"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -806,6 +806,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Desconectar"
|
||||
IDS_OPENFILELOCATION "Abrir &ubicación del archivo"
|
||||
IDS_SENDTO_MENU "E&nviar a"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error moviendo Archivo o Carpeta"
|
||||
IDS_COPYERRORTITLE "Error copiando Archivo o Carpeta"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Katkesta ühendus"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Deskonektatu"
|
||||
IDS_OPENFILELOCATION "Ireki &fitxategi kokalekua"
|
||||
IDS_SENDTO_MENU "&Bidali hona"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Errore bat gertatu da fitxategia edo karpeta lekuz aldatzean"
|
||||
IDS_COPYERRORTITLE "Errore bat gertatu da fitxategia edo karpeta kopiatzean"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Déconnecter"
|
||||
IDS_OPENFILELOCATION "Ouvrir l'empla&cement du fichier"
|
||||
IDS_SENDTO_MENU "Envo&yer vers"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Erreur lors du déplacement du fichier ou du dossier"
|
||||
IDS_COPYERRORTITLE "Erreur lors de la copie du fichier ou du dossier"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "נתק"
|
||||
IDS_OPENFILELOCATION "&פתח מיקום קובץ"
|
||||
IDS_SENDTO_MENU "&שלח אל"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "डिस्कनेक्ट"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -796,6 +796,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Leválasztás"
|
||||
IDS_OPENFILELOCATION "Tartalmazó &mappa megnyitása"
|
||||
IDS_SENDTO_MENU "&Küldés"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Nem sikerült áthelyezni a fájlt/mappát"
|
||||
IDS_COPYERRORTITLE "Nem sikerült másolni a fájlt/mappát"
|
||||
|
|
|
@ -794,6 +794,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Putuskan"
|
||||
IDS_OPENFILELOCATION "&Buka lokasi berkas"
|
||||
IDS_SENDTO_MENU "Kiri&m Ke"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Kesalahan memindahkan Berkas atau Folder"
|
||||
IDS_COPYERRORTITLE "Kesalahan menyalin Berkas atau Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -794,6 +794,7 @@ BEGIN
|
|||
IDS_DISCONNECT "接続の切断"
|
||||
IDS_OPENFILELOCATION "ファイルの場所を開く(&I)"
|
||||
IDS_SENDTO_MENU "送る(&N)"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "ファイルまたはフォルダの移動のエラー"
|
||||
IDS_COPYERRORTITLE "ファイルまたはフォルダのコピーのエラー"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "연결 끊기"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -806,6 +806,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Odłącz"
|
||||
IDS_OPENFILELOCATION "O&twórz lokalizację pliku"
|
||||
IDS_SENDTO_MENU "Wyślij d&o"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Błąd przenoszenia pliku lub folderu"
|
||||
IDS_COPYERRORTITLE "Błąd kopiowania pliku lub folderu"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Desligar"
|
||||
IDS_OPENFILELOCATION "Abrir localização do f&icheiro"
|
||||
IDS_SENDTO_MENU "&Enviar para"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Erro ao mover pasta ou ficheiro"
|
||||
IDS_COPYERRORTITLE "Erro ao copiar pasta ou ficheiro"
|
||||
|
|
|
@ -805,6 +805,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Deconectea&ză"
|
||||
IDS_OPENFILELOCATION "&Deschide locația fișierului"
|
||||
IDS_SENDTO_MENU "T&rimitere la"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Nu s-a putut muta fișierul sau folderul"
|
||||
IDS_COPYERRORTITLE "Nu s-a putut copia fișierul sau folderul"
|
||||
|
|
|
@ -806,6 +806,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Отсоединить"
|
||||
IDS_OPENFILELOCATION "Открыть &расположение объекта"
|
||||
IDS_SENDTO_MENU "Отправит&ь"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Ошибка при перемещении папки или файла"
|
||||
IDS_COPYERRORTITLE "Ошибка при копировании папки или файла"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Disconnect"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -806,6 +806,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Bağlantıyı kes"
|
||||
IDS_OPENFILELOCATION "&Dosya konumunu aç"
|
||||
IDS_SENDTO_MENU "&Gönder"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Dosya veya Dizin Taşıma Hatası"
|
||||
IDS_COPYERRORTITLE "Dosya veya Dizin Kopyalama Hatası"
|
||||
|
|
|
@ -797,6 +797,7 @@ BEGIN
|
|||
IDS_DISCONNECT "Відключити"
|
||||
IDS_OPENFILELOCATION "Open f&ile location"
|
||||
IDS_SENDTO_MENU "Se&nd To"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "Error Moving File or Folder"
|
||||
IDS_COPYERRORTITLE "Error Copying File or Folder"
|
||||
|
|
|
@ -805,6 +805,7 @@ BEGIN
|
|||
IDS_DISCONNECT "断开"
|
||||
IDS_OPENFILELOCATION "打开文件位置(&I)"
|
||||
IDS_SENDTO_MENU "发送到(&N)"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "无法移动文件或文件夹"
|
||||
IDS_COPYERRORTITLE "无法复制文件或文件夹"
|
||||
|
|
|
@ -803,6 +803,7 @@ BEGIN
|
|||
IDS_DISCONNECT "中斷"
|
||||
IDS_OPENFILELOCATION "開啟檔案位置(&I)"
|
||||
IDS_SENDTO_MENU "傳送到(&N)"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "移動檔案或資料夾發生錯誤"
|
||||
IDS_COPYERRORTITLE "複製檔案或資料夾發生錯誤"
|
||||
|
|
|
@ -804,6 +804,7 @@ BEGIN
|
|||
IDS_DISCONNECT "中斷"
|
||||
IDS_OPENFILELOCATION "開啟檔案位置(&I)"
|
||||
IDS_SENDTO_MENU "傳送到(&N)"
|
||||
IDS_COPYASPATHMENU "Copy as path"
|
||||
|
||||
IDS_MOVEERRORTITLE "移動檔案或資料夾發生錯誤"
|
||||
IDS_COPYERRORTITLE "複製檔案或資料夾發生錯誤"
|
||||
|
|
28
dll/win32/shell32/res/rgs/copyaspathmenu.rgs
Normal file
28
dll/win32/shell32/res/rgs/copyaspathmenu.rgs
Normal file
|
@ -0,0 +1,28 @@
|
|||
HKCR
|
||||
{
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {F3D06E7C-1E45-4A26-847E-F9FCDEE59BE0} = s 'Copy as Path Menu'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%'
|
||||
{
|
||||
val ThreadingModel = s 'Apartment'
|
||||
}
|
||||
}
|
||||
}
|
||||
NoRemove AllFilesystemObjects
|
||||
{
|
||||
NoRemove shell
|
||||
{
|
||||
ForceRemove copyaspath
|
||||
{
|
||||
val MUIVerb = s '@%MODULE%,-30328'
|
||||
val Extended = s ''
|
||||
DropTarget
|
||||
{
|
||||
val CLSID = s '{F3D06E7C-1E45-4A26-847E-F9FCDEE59BE0}'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,5 +30,6 @@ IDR_USERNOTIFICATION REGISTRY "res/rgs/usernotification.rgs"
|
|||
IDR_SHELL REGISTRY "res/rgs/shell.rgs"
|
||||
IDR_ACTIVEDESKTOP REGISTRY "res/rgs/activedesktop.rgs"
|
||||
IDR_SENDTOMENU REGISTRY "res/rgs/sendtomenu.rgs"
|
||||
IDR_COPYASPATHMENU REGISTRY "res/rgs/copyaspathmenu.rgs"
|
||||
IDR_COPYTOMENU REGISTRY "res/rgs/copytomenu.rgs"
|
||||
IDR_MOVETOMENU REGISTRY "res/rgs/movetomenu.rgs"
|
||||
|
|
|
@ -291,6 +291,7 @@ BEGIN_OBJECT_MAP(ObjectMap)
|
|||
OBJECT_ENTRY(CLSID_OpenWithMenu, COpenWithMenu)
|
||||
OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
|
||||
OBJECT_ENTRY(CLSID_SendToMenu, CSendToMenu)
|
||||
OBJECT_ENTRY(CLSID_CopyAsPathMenu, CCopyAsPathMenu)
|
||||
OBJECT_ENTRY(CLSID_CopyToMenu, CCopyToMenu)
|
||||
OBJECT_ENTRY(CLSID_MoveToMenu, CMoveToMenu)
|
||||
OBJECT_ENTRY(CLSID_StartMenu, CStartMenuDummy)
|
||||
|
|
|
@ -245,6 +245,7 @@
|
|||
|
||||
#define IDS_OPENFILELOCATION 341
|
||||
#define IDS_SENDTO_MENU 343
|
||||
#define IDS_COPYASPATHMENU 30328
|
||||
|
||||
#define IDS_MOVEERRORTITLE 344
|
||||
#define IDS_COPYERRORTITLE 345
|
||||
|
@ -909,3 +910,4 @@
|
|||
#define IDR_SENDTOMENU 158
|
||||
#define IDR_COPYTOMENU 159
|
||||
#define IDR_MOVETOMENU 160
|
||||
#define IDR_COPYASPATHMENU 161
|
||||
|
|
|
@ -140,6 +140,7 @@ DEFINE_GUID(CLSID_SysTray, 0x35CEC8A3, 0x2BE6, 0x11D2, 0x87, 0x7
|
|||
DEFINE_GUID(CLSID_BackgroundTaskScheduler, 0x603D3800, 0xBD81, 0x11d0, 0xA3, 0xA5, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC);
|
||||
DEFINE_GUID(CLSID_SharedTaskScheduler, 0x603D3801, 0xBD81, 0x11d0, 0xA3, 0xA5, 0x00, 0xC0, 0x4F, 0xD7, 0x06, 0xEC);
|
||||
DEFINE_GUID(CLSID_SendToMenu, 0x7BA4C740, 0x9E81, 0x11CF, 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37);
|
||||
DEFINE_GUID(CLSID_CopyAsPathMenu, 0xF3D06E7C, 0x1E45, 0x4A26, 0x84, 0x7E, 0xF9, 0xFC, 0xDE, 0xE5, 0x9B, 0xE0);
|
||||
DEFINE_GUID(CLSID_CopyToMenu, 0xC2FBB630, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13);
|
||||
DEFINE_GUID(CLSID_MoveToMenu, 0xC2FBB631, 0x2971, 0x11D1, 0xA1, 0x8C, 0x00, 0xC0, 0x4F, 0xD7, 0x5D, 0x13);
|
||||
DEFINE_GUID(CLSID_MruPidlList, 0x42AEDC87, 0x2188, 0x41FD, 0xB9, 0xA3, 0x0C, 0x96, 0x6F, 0xEA, 0xBE, 0xC1);
|
||||
|
|
Loading…
Reference in a new issue