ReactOS
0.4.16-dev-588-gf07ea94
CSendToMenu.h
Go to the documentation of this file.
1
/*
2
* provides new shell item service
3
*
4
* Copyright 2019 Katayama Hirofumi MZ.
5
*
6
* This library is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with this library; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19
*/
20
21
#ifndef _SHV_ITEM_SENDTO_H_
22
#define _SHV_ITEM_SENDTO_H_
23
24
extern
"C"
const
GUID
CLSID_SendToMenu
;
25
26
class
CSendToMenu
:
27
public
CComCoClass<CSendToMenu, &CLSID_SendToMenu>,
28
public
CComObjectRootEx<CComMultiThreadModelNoCS>,
29
public
IContextMenu3
,
30
public
IShellExtInit
31
{
32
private
:
33
struct
SENDTO_ITEM
34
{
35
SENDTO_ITEM
*
pNext
;
36
PITEMID_CHILD
pidlChild
;
37
LPWSTR
pszText
;
38
HICON
hIcon
;
39
40
SENDTO_ITEM
(
PITEMID_CHILD
child
,
LPWSTR
text
,
HICON
icon)
41
:
pNext
(
NULL
)
42
,
pidlChild
(
child
)
43
,
pszText
(
text
)
44
,
hIcon
(icon)
45
{
46
}
47
48
~SENDTO_ITEM
()
49
{
50
CoTaskMemFree
(
pidlChild
);
51
CoTaskMemFree
(
pszText
);
52
DestroyIcon
(
hIcon
);
53
}
54
55
private
:
56
SENDTO_ITEM
();
57
SENDTO_ITEM
(
const
SENDTO_ITEM
&);
58
SENDTO_ITEM
&
operator=
(
const
SENDTO_ITEM
&);
59
};
60
61
HMENU
m_hSubMenu
;
62
SENDTO_ITEM
*
m_pItems
;
63
UINT
m_idCmdFirst
;
64
65
CComPtr<IShellFolder>
m_pDesktop
;
66
CComPtr<IShellFolder>
m_pSendTo
;
67
CComPtr<IDataObject>
m_pDataObject
;
68
69
HRESULT
LoadAllItems
(
HWND
hwnd
);
70
void
UnloadAllItems
();
71
72
UINT
InsertSendToItems
(
HMENU
hMenu,
UINT
idFirst,
UINT
idMenu);
73
74
SENDTO_ITEM
*
FindItemFromIdOffset
(
UINT
IdOffset);
75
HRESULT
DoSendToItem
(
SENDTO_ITEM
*pItem,
LPCMINVOKECOMMANDINFO
lpici);
76
77
HRESULT
DoDrop
(
IDataObject
*pDataObject,
IDropTarget
*pDropTarget);
78
HRESULT
GetSpecialFolder
(
HWND
hwnd
,
IShellFolder
**ppFolder,
int
csidl,
79
PIDLIST_ABSOLUTE
*ppidl =
NULL
);
80
HRESULT
GetUIObjectFromPidl
(
HWND
hwnd
,
PIDLIST_ABSOLUTE
pidl,
REFIID
riid
,
LPVOID
*ppvOut);
81
82
public
:
83
CSendToMenu
();
84
~CSendToMenu
();
85
86
// IContextMenu
87
STDMETHODIMP
QueryContextMenu
(
HMENU
hMenu,
UINT
indexMenu,
UINT
idCmdFirst,
UINT
idCmdLast,
UINT
uFlags
);
88
STDMETHODIMP
InvokeCommand
(
LPCMINVOKECOMMANDINFO
lpcmi);
89
STDMETHODIMP
GetCommandString
(
UINT_PTR
idCommand,
UINT
uFlags
,
UINT
*
lpReserved
,
LPSTR
lpszName,
UINT
uMaxNameLen);
90
91
// IContextMenu3
92
STDMETHODIMP
HandleMenuMsg2
(
UINT
uMsg,
WPARAM
wParam
,
LPARAM
lParam
,
LRESULT
*plResult);
93
94
// IContextMenu2
95
STDMETHODIMP
HandleMenuMsg
(
UINT
uMsg,
WPARAM
wParam
,
LPARAM
lParam
);
96
97
// IShellExtInit
98
STDMETHODIMP
Initialize
(
PCIDLIST_ABSOLUTE
pidlFolder,
IDataObject
*pdtobj,
HKEY
hkeyProgID);
99
100
DECLARE_REGISTRY_RESOURCEID
(
IDR_SENDTOMENU
)
101
DECLARE_NOT_AGGREGATABLE
(
CSendToMenu
)
102
DECLARE_PROTECT_FINAL_CONSTRUCT
()
103
104
BEGIN_COM_MAP
(
CSendToMenu
)
105
COM_INTERFACE_ENTRY_IID
(IID_IContextMenu3,
IContextMenu3
)
106
COM_INTERFACE_ENTRY_IID
(IID_IContextMenu2,
IContextMenu2
)
107
COM_INTERFACE_ENTRY_IID
(IID_IContextMenu,
IContextMenu
)
108
COM_INTERFACE_ENTRY_IID
(IID_IShellExtInit,
IShellExtInit
)
109
END_COM_MAP
()
110
};
111
112
#endif
/* _SHV_ITEM_SENDTO_H_ */
CLSID_SendToMenu
const GUID CLSID_SendToMenu
Definition:
CSendToMenu.h:24
lpReserved
static DWORD const LPVOID const lpReserved
Definition:
appcrt_dllmain.cpp:58
STDMETHODIMP
#define STDMETHODIMP
Definition:
basetyps.h:43
CSendToMenu
Definition:
CSendToMenu.h:31
CSendToMenu::FindItemFromIdOffset
SENDTO_ITEM * FindItemFromIdOffset(UINT IdOffset)
Definition:
CSendToMenu.cpp:246
CSendToMenu::GetUIObjectFromPidl
HRESULT GetUIObjectFromPidl(HWND hwnd, PIDLIST_ABSOLUTE pidl, REFIID riid, LPVOID *ppvOut)
Definition:
CSendToMenu.cpp:129
CSendToMenu::m_pItems
SENDTO_ITEM * m_pItems
Definition:
CSendToMenu.h:62
CSendToMenu::m_pSendTo
CComPtr< IShellFolder > m_pSendTo
Definition:
CSendToMenu.h:66
CSendToMenu::InsertSendToItems
UINT InsertSendToItems(HMENU hMenu, UINT idFirst, UINT idMenu)
Definition:
CSendToMenu.cpp:207
CSendToMenu::~CSendToMenu
~CSendToMenu()
Definition:
CSendToMenu.cpp:39
CSendToMenu::LoadAllItems
HRESULT LoadAllItems(HWND hwnd)
Definition:
CSendToMenu.cpp:152
CSendToMenu::m_pDesktop
CComPtr< IShellFolder > m_pDesktop
Definition:
CSendToMenu.h:65
CSendToMenu::UnloadAllItems
void UnloadAllItems()
Definition:
CSendToMenu.cpp:140
CSendToMenu::GetSpecialFolder
HRESULT GetSpecialFolder(HWND hwnd, IShellFolder **ppFolder, int csidl, PIDLIST_ABSOLUTE *ppidl=NULL)
Definition:
CSendToMenu.cpp:100
CSendToMenu::QueryContextMenu
STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
Definition:
CSendToMenu.cpp:282
CSendToMenu::m_hSubMenu
HMENU m_hSubMenu
Definition:
CSendToMenu.h:61
CSendToMenu::HandleMenuMsg
STDMETHODIMP HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition:
CSendToMenu.cpp:358
CSendToMenu::CSendToMenu
CSendToMenu()
Definition:
CSendToMenu.cpp:25
CSendToMenu::HandleMenuMsg2
STDMETHODIMP HandleMenuMsg2(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *plResult)
Definition:
CSendToMenu.cpp:364
CSendToMenu::GetCommandString
STDMETHODIMP GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen)
Definition:
CSendToMenu.cpp:345
CSendToMenu::DoSendToItem
HRESULT DoSendToItem(SENDTO_ITEM *pItem, LPCMINVOKECOMMANDINFO lpici)
Definition:
CSendToMenu.cpp:259
CSendToMenu::DoDrop
HRESULT DoDrop(IDataObject *pDataObject, IDropTarget *pDropTarget)
Definition:
CSendToMenu.cpp:50
CSendToMenu::m_pDataObject
CComPtr< IDataObject > m_pDataObject
Definition:
CSendToMenu.h:67
CSendToMenu::InvokeCommand
STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
Definition:
CSendToMenu.cpp:327
CSendToMenu::m_idCmdFirst
UINT m_idCmdFirst
Definition:
CSendToMenu.h:63
wParam
WPARAM wParam
Definition:
combotst.c:138
lParam
LPARAM lParam
Definition:
combotst.c:139
NULL
#define NULL
Definition:
types.h:112
uFlags
UINT uFlags
Definition:
api.c:59
text
const WCHAR * text
Definition:
package.c:1794
CoTaskMemFree
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition:
ifs.c:442
riid
REFIID riid
Definition:
atlbase.h:39
GUID
Definition:
shobjidl.idl:2988
HRESULT
Definition:
mshtmhst.idl:286
IContextMenu2
Definition:
shobjidl.idl:1772
IContextMenu3
Definition:
shobjidl.idl:1792
IContextMenu
Definition:
shobjidl.idl:1646
IDataObject
Definition:
objidl.idl:1530
IDropTarget
Definition:
oleidl.idl:925
IShellExtInit
Definition:
shobjidl.idl:1290
IShellFolder
Definition:
shobjidl.idl:156
void
Definition:
nsiface.idl:2307
BEGIN_COM_MAP
#define BEGIN_COM_MAP(x)
Definition:
atlcom.h:581
COM_INTERFACE_ENTRY_IID
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition:
atlcom.h:601
DECLARE_PROTECT_FINAL_CONSTRUCT
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
Definition:
atlcom.h:679
DECLARE_NOT_AGGREGATABLE
#define DECLARE_NOT_AGGREGATABLE(x)
Definition:
atlcom.h:651
DECLARE_REGISTRY_RESOURCEID
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition:
atlcom.h:645
END_COM_MAP
#define END_COM_MAP()
Definition:
atlcom.h:592
HICON
static HICON
Definition:
imagelist.c:80
HMENU
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition:
ordinal.c:63
child
static HWND child
Definition:
cursoricon.c:298
UINT_PTR
unsigned __int3264 UINT_PTR
Definition:
mstsclib_h.h:274
UINT
unsigned int UINT
Definition:
ndis.h:50
REFIID
#define REFIID
Definition:
guiddef.h:118
IDR_SENDTOMENU
#define IDR_SENDTOMENU
Definition:
shresdef.h:913
CSendToMenu::SENDTO_ITEM
Definition:
CSendToMenu.h:34
CSendToMenu::SENDTO_ITEM::hIcon
HICON hIcon
Definition:
CSendToMenu.h:38
CSendToMenu::SENDTO_ITEM::pidlChild
PITEMID_CHILD pidlChild
Definition:
CSendToMenu.h:36
CSendToMenu::SENDTO_ITEM::SENDTO_ITEM
SENDTO_ITEM()
CSendToMenu::SENDTO_ITEM::SENDTO_ITEM
SENDTO_ITEM(const SENDTO_ITEM &)
CSendToMenu::SENDTO_ITEM::pNext
SENDTO_ITEM * pNext
Definition:
CSendToMenu.h:35
CSendToMenu::SENDTO_ITEM::operator=
SENDTO_ITEM & operator=(const SENDTO_ITEM &)
CSendToMenu::SENDTO_ITEM::SENDTO_ITEM
SENDTO_ITEM(PITEMID_CHILD child, LPWSTR text, HICON icon)
Definition:
CSendToMenu.h:40
CSendToMenu::SENDTO_ITEM::pszText
LPWSTR pszText
Definition:
CSendToMenu.h:37
CSendToMenu::SENDTO_ITEM::~SENDTO_ITEM
~SENDTO_ITEM()
Definition:
CSendToMenu.h:48
IContextMenu::tagCMINVOKECOMMANDINFO
Definition:
shobjidl.idl:1713
_ITEMIDLIST_ABSOLUTE
Definition:
shtypes.idl:46
_ITEMID_CHILD
Definition:
shtypes.idl:47
hwnd
_In_ LONG _In_ HWND hwnd
Definition:
winddi.h:4023
LPARAM
LONG_PTR LPARAM
Definition:
windef.h:208
LRESULT
LONG_PTR LRESULT
Definition:
windef.h:209
WPARAM
UINT_PTR WPARAM
Definition:
windef.h:207
DestroyIcon
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition:
cursoricon.c:2139
Initialize
static void Initialize()
Definition:
xlate.c:212
LPSTR
char * LPSTR
Definition:
xmlstorage.h:182
LPWSTR
WCHAR * LPWSTR
Definition:
xmlstorage.h:184
dll
win32
shell32
CSendToMenu.h
Generated on Thu Jan 23 2025 06:04:55 for ReactOS by
1.9.6