42 lines
No EOL
1.1 KiB
C++
42 lines
No EOL
1.1 KiB
C++
#pragma once
|
|
|
|
#include <Windows.h>
|
|
#include <ShlObj.h>
|
|
#include <vector>
|
|
|
|
class FrameWorkContextMenuExt: public IShellExtInit, public IContextMenu
|
|
{
|
|
public:
|
|
// IUnknown
|
|
IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv);
|
|
IFACEMETHODIMP_(ULONG) AddRef();
|
|
IFACEMETHODIMP_(ULONG) Release();
|
|
|
|
// IShellExtInit
|
|
IFACEMETHODIMP Initialize(LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hKeyProgID);
|
|
|
|
// IContextMenu
|
|
IFACEMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
|
|
IFACEMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO pici);
|
|
IFACEMETHODIMP GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax);
|
|
|
|
FrameWorkContextMenuExt();
|
|
|
|
protected:
|
|
~FrameWorkContextMenuExt();
|
|
|
|
void SendFilesToPScan();
|
|
unsigned GetDataRoot(wchar_t *_dest, unsigned _dstSize) const;
|
|
void LaunchPScan() const;
|
|
|
|
private:
|
|
// ref counter
|
|
long m_cRef;
|
|
|
|
struct File
|
|
{
|
|
wchar_t Name[MAX_PATH];
|
|
};
|
|
|
|
std::vector<File> m_selectedFiles;
|
|
}; |