mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-08 12:18:50 +02:00
powerrename: implement shellext support for UWP
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
#pragma once
|
||||
#include "stdafx.h"
|
||||
|
||||
class CPowerRenameMenu :
|
||||
class __declspec(uuid("0440049F-D1DC-4E46-B27B-98393D79486B")) CPowerRenameMenu :
|
||||
public IShellExtInit,
|
||||
public IContextMenu
|
||||
public IContextMenu,
|
||||
public IExplorerCommand
|
||||
{
|
||||
public:
|
||||
CPowerRenameMenu();
|
||||
@@ -15,6 +16,7 @@ public:
|
||||
{
|
||||
QITABENT(CPowerRenameMenu, IShellExtInit),
|
||||
QITABENT(CPowerRenameMenu, IContextMenu),
|
||||
QITABENT(CPowerRenameMenu, IExplorerCommand),
|
||||
{ 0, 0 },
|
||||
};
|
||||
return QISearch(this, qit, riid, ppv);
|
||||
@@ -22,12 +24,12 @@ public:
|
||||
|
||||
IFACEMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
return InterlockedIncrement(&m_refCount);
|
||||
return ++m_refCount;
|
||||
}
|
||||
|
||||
IFACEMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
LONG refCount = InterlockedDecrement(&m_refCount);
|
||||
LONG refCount = --m_refCount;
|
||||
if (refCount == 0)
|
||||
{
|
||||
delete this;
|
||||
@@ -46,6 +48,17 @@ public:
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// Inherited via IExplorerCommand
|
||||
virtual HRESULT __stdcall GetTitle(IShellItemArray* psiItemArray, LPWSTR* ppszName) override;
|
||||
virtual HRESULT __stdcall GetIcon(IShellItemArray* psiItemArray, LPWSTR* ppszIcon) override;
|
||||
virtual HRESULT __stdcall GetToolTip(IShellItemArray* psiItemArray, LPWSTR* ppszInfotip) override;
|
||||
virtual HRESULT __stdcall GetCanonicalName(GUID* pguidCommandName) override;
|
||||
virtual HRESULT __stdcall GetState(IShellItemArray* psiItemArray, BOOL fOkToBeSlow, EXPCMDSTATE* pCmdState) override;
|
||||
virtual HRESULT __stdcall Invoke(IShellItemArray* psiItemArray, IBindCtx* pbc) override;
|
||||
virtual HRESULT __stdcall GetFlags(EXPCMDFLAGS* pFlags) override;
|
||||
virtual HRESULT __stdcall EnumSubCommands(IEnumExplorerCommand** ppEnum) override;
|
||||
|
||||
|
||||
static HRESULT s_CreateInstance(_In_opt_ IUnknown* punkOuter, _In_ REFIID riid, _Outptr_ void** ppv);
|
||||
static DWORD WINAPI s_PowerRenameUIThreadProc(_In_ void* pData);
|
||||
|
||||
@@ -55,8 +68,8 @@ public:
|
||||
private:
|
||||
~CPowerRenameMenu();
|
||||
|
||||
long m_refCount = 1;
|
||||
HBITMAP m_hbmpIcon = NULL;
|
||||
std::atomic<long> m_refCount = 1;
|
||||
HBITMAP m_hbmpIcon = nullptr;
|
||||
CComPtr<IDataObject> m_spdo;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user