Skip to content

Commit c4745a4

Browse files
committed
Minor code cleanup
1 parent 0b6e085 commit c4745a4

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

src/pyshellext/shellext.cpp

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ HRESULT ReadAllIdleInstalls(std::vector<IdleData> &idles, HKEY hive, LPCWSTR roo
167167
}
168168

169169
class DECLSPEC_UUID(CLSID_LAUNCH_COMMAND) LaunchCommand
170-
: public RuntimeClass<RuntimeClassFlags<ClassicCom>, IExplorerCommand>
170+
: public RuntimeClass<RuntimeClassFlags<ClassicCom>, IExplorerCommand, IObjectWithSite>
171171
{
172172
std::wstring title;
173173
std::wstring exe;
@@ -269,6 +269,26 @@ class DECLSPEC_UUID(CLSID_LAUNCH_COMMAND) LaunchCommand
269269
*ppEnum = NULL;
270270
return E_NOTIMPL;
271271
}
272+
273+
// IObjectWithSite
274+
private:
275+
ComPtr<IUnknown> _site;
276+
277+
public:
278+
IFACEMETHODIMP GetSite(REFIID riid, void **ppvSite)
279+
{
280+
if (_site) {
281+
return _site->QueryInterface(riid, ppvSite);
282+
}
283+
*ppvSite = NULL;
284+
return E_FAIL;
285+
}
286+
287+
IFACEMETHODIMP SetSite(IUnknown *pSite)
288+
{
289+
_site = pSite;
290+
return S_OK;
291+
}
272292
};
273293

274294

@@ -321,7 +341,6 @@ class DECLSPEC_UUID(CLSID_IDLE_COMMAND) IdleCommand
321341
std::vector<IdleData> idles;
322342
std::wstring iconPath;
323343
std::wstring title;
324-
ComPtr<IUnknown> _site;
325344
public:
326345
IdleCommand() : title(L"Edit in &IDLE")
327346
{
@@ -434,6 +453,11 @@ class DECLSPEC_UUID(CLSID_IDLE_COMMAND) IdleCommand
434453
return S_OK;
435454
}
436455

456+
// IObjectWithSite
457+
private:
458+
ComPtr<IUnknown> _site;
459+
460+
public:
437461
IFACEMETHODIMP GetSite(REFIID riid, void **ppvSite)
438462
{
439463
if (_site) {
@@ -469,9 +493,6 @@ IExplorerCommand *MakeIdleCommand(HKEY hive, LPCWSTR root)
469493

470494
#elif defined(_WINDLL)
471495

472-
#pragma comment(linker, "/export:DllGetClassObject")
473-
#pragma comment(linker, "/export:DllCanUnloadNow")
474-
475496
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, _COM_Outptr_ void** ppv)
476497
{
477498
return Module<InProc>::GetModule().GetClassObject(rclsid, riid, ppv);

0 commit comments

Comments
 (0)