5 #define PROXY_DESKTOP_CLASS L"Proxy Desktop" 34 public CWindowImpl < CProxyDesktop, CWindow, CFrameWinTraits >
48 TRACE(
"Proxy Desktop message 1037.\n");
55 TRACE(
"Proxy Desktop message 1035 received.\n");
82 TRACE(
"Found main desktop.\n");
88 TRACE(
"Separate folders setting enabled. Ignoring main desktop.\n");
95 TRACE(
"Found proxy desktop.\n");
105 UINT sharedBlockSize =
sizeof(*hnfData);
106 UINT directoryPidlLength = 0;
118 sharedBlockSize += directoryPidlLength;
119 TRACE(
"directoryPidlLength=%d\n", directoryPidlLength);
126 sharedBlockSize += pidlSize7C;
127 TRACE(
"pidlSize7C=%d\n", pidlSize7C);
131 if (!(threadParams->
offset84 & 0x8000))
136 sharedBlockSize += pidlSize80;
137 TRACE(
"pidlSize80=%d\n", pidlSize7C);
142 TRACE(
"pidl80 sent by value = %p\n", pidl80);
144 sharedBlockSize += pidlSize80;
150 pathLength = 2 *
lstrlenW(strPath) + 2;
151 sharedBlockSize += pathLength;
152 TRACE(
"pathLength=%d\n", pidlSize7C);
155 TRACE(
"sharedBlockSize=%d\n", sharedBlockSize);
161 ERR(
"Shared section alloc error.\n");
175 hnfData->
cbSize = sharedBlockSize;
192 target +=
sizeof(*hnfData);
198 target += directoryPidlLength;
211 if (threadParams->
offset84 & 0x8000)
273 block +=
sizeof(*hnfData);
279 params->directoryPIDL = pidl;
296 if (!(
params->offset84 & 0x8000))
334 if (!
params->directoryPIDL)
351 if (parameters && parameters->
offsetF8)
357 wFlags |= SBSP_EXPLOREMODE;
377 if (pidlSelect !=
NULL)
380 hResult = psb->QueryActiveShellView(&shellView);
383 shellView->SelectItem(pidlSelect, SVSI_SELECT | SVSI_FOCUSED | SVSI_ENSUREVISIBLE);
406 if (browser->v_MayTranslateAccelerator(&
Msg) !=
S_OK)
416 DbgPrint(
"WARNING: There are %d references to the CShellBrowser active or leaked.\n", nrc);
422 if (parameters && parameters->
offsetF8)
455 TRACE(
"SHCreateIETHREADPARAM\n");
462 result->offsetC = param10;
465 result->offset14 = param14;
478 TRACE(
"SHCloneIETHREADPARAM\n");
491 result->offset70->AddRef();
494 result->offsetC->Method2C();
504 TRACE(
"SHDestroyIETHREADPARAM\n");
515 param->offset14->Release();
517 param->offset70->Release();
519 param->offset78->Release();
521 param->offsetC->Release();
523 param->offsetF8->Release();
532 TRACE(
"SHOnCWMCommandLine\n");
562 if (threadHandle !=
NULL)
582 TRACE(
"SHOpenNewFrame\n");
585 if (parameters ==
NULL)
608 TRACE(
"SHCreateFromDesktop\n");
619 WARN(
"strPath and pidlPath are both assigned. This shouldn't happen.\n");
622 strPath = parseResults->
strPath;
653 TRACE(
"Found desktop hwnd=%p\n", desktop);
663 TRACE(
"Sending open message...\n");
672 TRACE(
"Desktop not found or separate flag requested.\n");
static unsigned int block
IEThreadParamBlock *WINAPI SHCloneIETHREADPARAM(IEThreadParamBlock *param)
HRESULT WINAPI SHOpenFolderWindow(PIE_THREAD_PARAM_BLOCK parameters)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
HWND WINAPI GetShellWindow(VOID)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHCreateThreadRef(LONG *lprefcount, IUnknown **lppUnknown)
HANDLE MakeSharedPacket(IEThreadParamBlock *threadParams, LPCWSTR strPath, int dwProcessId)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
ITEMID_CHILD UNALIGNED * PUITEMID_CHILD
HRESULT WINAPI SHGetInstanceExplorer(IUnknown **lpUnknown)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
HWND FindShellProxy(LPITEMIDLIST pidl)
DWORD WINAPI GetLastError(VOID)
static HRESULT ExplorerMessageLoop(IEThreadParamBlock *parameters)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
BOOL WINAPI AllowSetForegroundWindow(DWORD dwProcessId)
#define IID_PPV_ARG(Itype, ppType)
BOOL WINAPI DestroyWindow(_In_ HWND)
PIE_THREAD_PARAM_BLOCK ParseSharedPacket(HANDLE hData)
HRESULT CShellBrowser_CreateInstance(REFIID riid, void **ppv)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
GLenum const GLfloat * params
#define SH_EXPLORER_CMDLINE_FLAG_E
DWORD WINAPI GetWindowThreadProcessId(HWND, PDWORD)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
LRESULT OnMessage1037(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnOpenNewWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
HRESULT WINAPI SHOpenNewFrame(LPITEMIDLIST pidl, IUnknown *paramC, long param10, DWORD dwFlags)
HANDLE WINAPI SHAllocShared(LPCVOID lpvData, DWORD dwSize, DWORD dwProcId)
BOOL WINAPI SHOnCWMCommandLine(HANDLE hSharedInfo)
#define FAILED_UNEXPECTEDLY(hr)
BOOL WINAPI SHCreateFromDesktop(ExplorerCommandLineParseResults *parseResults)
BOOL WINAPI SHFreeShared(HANDLE hShared, DWORD dwProcId)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
IEThreadParamBlock *WINAPI SHCreateIETHREADPARAM(long param8, long paramC, IUnknown *param10, IUnknown *param14)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
_In_ DWORD _Out_ _In_ WORD wFlags
CProxyDesktop(IEThreadParamBlock *parameters)
void WINAPI SHDestroyIETHREADPARAM(IEThreadParamBlock *param)
#define SH_EXPLORER_CMDLINE_FLAG_STRING
void shell(int argc, const char *argv[])
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
PVOID WINAPI SHLockShared(HANDLE hShared, DWORD dwProcId)
VOID WINAPI SHSetInstanceExplorer(LPUNKNOWN lpUnknown)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_EXPLORER_OPEN_NEW_WINDOW
#define BEGIN_MSG_MAP(theClass)
static DWORD WINAPI BrowserThreadProc(LPVOID lpThreadParameter)
#define MESSAGE_HANDLER(msg, func)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SHUnlockShared(LPVOID lpView)
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
#define SH_EXPLORER_CMDLINE_FLAG_SEPARATE
#define SH_EXPLORER_CMDLINE_FLAG_SELECT
DWORD WINAPI GetCurrentProcessId(VOID)
LPITEMIDLIST directoryPIDL
#define PROXY_DESKTOP_CLASS