ReactOS 0.4.15-dev-8434-g155a7c7
explorer.cpp File Reference
#include "precomp.h"
#include <browseui_undoc.h>
Include dependency graph for explorer.cpp:

Go to the source code of this file.

Classes

class  CExplorerModule
 

Functions

static VOID InitializeAtlModule (HINSTANCE hInstance, BOOL bInitialize)
 
static BOOL SetShellReadyEvent (IN LPCWSTR lpEventName)
 
static VOID HideMinimizedWindows (IN BOOL bHide)
 
static INT StartWithCommandLine (IN HINSTANCE hInstance)
 
static INT StartWithDesktop (IN HINSTANCE hInstance)
 
INT WINAPI _tWinMain (IN HINSTANCE hInstance, IN HINSTANCE hPrevInstance, IN LPTSTR lpCmdLine, IN INT nCmdShow)
 

Variables

HINSTANCE hExplorerInstance
 
HANDLE hProcessHeap
 
HKEY hkExplorer = NULL
 
BOOL bExplorerIsShell = FALSE
 
CExplorerModule gModule
 
CAtlWinModule gWinModule
 

Function Documentation

◆ _tWinMain()

INT WINAPI _tWinMain ( IN HINSTANCE  hInstance,
IN HINSTANCE  hPrevInstance,
IN LPTSTR  lpCmdLine,
IN INT  nCmdShow 
)

Definition at line 199 of file explorer.cpp.

203{
204 /*
205 * Set our shutdown parameters: we want to shutdown the very last,
206 * but before any TaskMgr instance (which has a shutdown level of 1).
207 */
209
210 InitRSHELL();
211
212 TRACE("Explorer starting... Command line: %S\n", lpCmdLine);
213
214#if !WIN7_COMPAT_MODE
215 if (GetShellWindow() == NULL)
217
218 if (!bExplorerIsShell)
219 {
221 }
222#else
224#endif
225
227}
static INT StartWithCommandLine(IN HINSTANCE hInstance)
Definition: explorer.cpp:92
BOOL bExplorerIsShell
Definition: explorer.cpp:27
static INT StartWithDesktop(IN HINSTANCE hInstance)
Definition: explorer.cpp:114
VOID InitRSHELL(VOID)
Definition: rshell.cpp:27
HINSTANCE hInstance
Definition: charmap.c:19
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
BOOL WINAPI SetProcessShutdownParameters(IN DWORD dwLevel, IN DWORD dwFlags)
Definition: proc.c:949
#define TRACE(s)
Definition: solgame.cpp:4
HWND WINAPI GetShellWindow(VOID)
Definition: desktop.c:651

◆ HideMinimizedWindows()

static VOID HideMinimizedWindows ( IN BOOL  bHide)
static

Definition at line 71 of file explorer.cpp.

72{
74
75 mm.cbSize = sizeof(mm);
76 if (!SystemParametersInfoW(SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0))
77 {
78 ERR("SystemParametersInfoW failed with %lu\n", GetLastError());
79 return;
80 }
81 if (bHide)
82 mm.iArrange |= ARW_HIDE;
83 else
84 mm.iArrange &= ~ARW_HIDE;
85 if (!SystemParametersInfoW(SPI_SETMINIMIZEDMETRICS, sizeof(mm), &mm, 0))
86 ERR("SystemParametersInfoW failed with %lu\n", GetLastError());
87}
#define ERR(fmt,...)
Definition: precomp.h:57
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define ARW_HIDE
Definition: winuser.h:1076
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)

Referenced by StartWithDesktop().

◆ InitializeAtlModule()

static VOID InitializeAtlModule ( HINSTANCE  hInstance,
BOOL  bInitialize 
)
static

Definition at line 40 of file explorer.cpp.

41{
42 if (bInitialize)
43 {
44 gModule.Init(ObjectMap, hInstance, NULL);
45 }
46 else
47 {
48 gModule.Term();
49 }
50}
CExplorerModule gModule
Definition: explorer.cpp:37
void Term()
Definition: atlbase.h:916
HRESULT Init(_ATL_OBJMAP_ENTRY *p, HINSTANCE, const GUID *plibid)
Definition: atlbase.h:886

Referenced by StartWithDesktop().

◆ SetShellReadyEvent()

static BOOL SetShellReadyEvent ( IN LPCWSTR  lpEventName)
static

Definition at line 54 of file explorer.cpp.

55{
57
59 if (hEvent != NULL)
60 {
62
64 return TRUE;
65 }
66
67 return FALSE;
68}
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
static HANDLE hEvent
Definition: comm.c:54
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName)
Definition: synch.c:682
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
#define EVENT_MODIFY_STATE
Definition: winbase.h:163

Referenced by StartWithDesktop().

◆ StartWithCommandLine()

static INT StartWithCommandLine ( IN HINSTANCE  hInstance)
static

Definition at line 92 of file explorer.cpp.

93{
94 BOOL b = FALSE;
95 EXPLORER_CMDLINE_PARSE_RESULTS parseResults = { 0 };
96
97 if (SHExplorerParseCmdLine(&parseResults))
98 b = SHCreateFromDesktop(&parseResults);
99
100 if (parseResults.strPath)
101 SHFree(parseResults.strPath);
102
103 if (parseResults.pidlPath)
104 ILFree(parseResults.pidlPath);
105
106 if (parseResults.pidlRoot)
107 ILFree(parseResults.pidlRoot);
108
109 return b;
110}
BOOL WINAPI SHCreateFromDesktop(_In_ PEXPLORER_CMDLINE_PARSE_RESULTS parseResults)
Definition: desktopipc.cpp:619
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
unsigned int BOOL
Definition: ntddk_ex.h:94
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define b
Definition: ke_i.h:79
UINT_PTR WINAPI SHExplorerParseCmdLine(_Out_ PEXPLORER_CMDLINE_PARSE_RESULTS pInfo)
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:940

Referenced by _tWinMain().

◆ StartWithDesktop()

static INT StartWithDesktop ( IN HINSTANCE  hInstance)
static

Definition at line 114 of file explorer.cpp.

115{
117
119 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer",
121 {
122 WCHAR Message[256];
125 return 1;
126 }
127
130
132
135
136#if !WIN7_COMPAT_MODE
137 /* Initialize shell dde support */
139#endif
140
141 /* Initialize shell icons */
143
144 /* Initialize CLSID_ShellWindows class */
146
148 CreateTrayWindow(&Tray);
149
150#if !WIN7_DEBUG_MODE
151 /* This not only hides the minimized window captions in the bottom
152 left screen corner, but is also needed in order to receive
153 HSHELL_* notification messages (which are required for taskbar
154 buttons to work right) */
156
157 ProcessRunOnceItems(); // Must be executed before the desktop is created
158
159 HANDLE hShellDesktop = NULL;
160 if (Tray != NULL)
161 hShellDesktop = DesktopCreateWindow(Tray);
162
163 /* WinXP: Notify msgina to hide the welcome screen */
164 if (!SetShellReadyEvent(L"msgina: ShellReadyEvent"))
165 SetShellReadyEvent(L"Global\\msgina: ShellReadyEvent");
166
167 if (DoStartStartupItems(Tray))
168 {
171 }
172 ReleaseStartupMutex(); // For ProcessRunOnceItems
173#endif
174
175 if (Tray != NULL)
176 {
177 TrayMessageLoop(Tray);
178#if !WIN7_DEBUG_MODE
180#endif
181 }
182
183#if !WIN7_DEBUG_MODE
184 if (hShellDesktop != NULL)
185 DesktopDestroyShellWindow(hShellDesktop);
186#endif
187
189
192
194
195 return 0;
196}
VOID DesktopDestroyShellWindow(IN HANDLE hDesktop)
Definition: desktop.cpp:203
HANDLE DesktopCreateWindow(IN OUT ITrayWindow *Tray)
Definition: desktop.cpp:188
static VOID InitializeAtlModule(HINSTANCE hInstance, BOOL bInitialize)
Definition: explorer.cpp:40
static VOID HideMinimizedWindows(IN BOOL bHide)
Definition: explorer.cpp:71
static BOOL SetShellReadyEvent(IN LPCWSTR lpEventName)
Definition: explorer.cpp:54
HINSTANCE hExplorerInstance
Definition: explorer.cpp:24
HKEY hkExplorer
Definition: explorer.cpp:26
HANDLE hProcessHeap
Definition: explorer.cpp:25
VOID TrayMessageLoop(IN OUT ITrayWindow *Tray)
static VOID DoFinishStartupItems()
Definition: precomp.h:260
VOID ReleaseStartupMutex()
Definition: startup.cpp:513
void WINAPI _ShellDDEInit(BOOL bInit)
Definition: rshell.cpp:139
DWORD WINAPI _WinList_Init(void)
Definition: rshell.cpp:110
HRESULT CreateTrayWindow(ITrayWindow **ppTray)
Definition: traywnd.cpp:3690
TaskbarSettings g_TaskbarSettings
Definition: settings.cpp:23
VOID ProcessRunOnceItems()
Definition: startup.cpp:588
static INT ProcessStartupItems()
Definition: precomp.h:259
BOOL DoStartStartupItems(ITrayWindow *Tray)
Definition: startup.cpp:549
#define IDS_STARTUP_ERROR
Definition: resource.h:98
#define RegCloseKey(hKey)
Definition: registry.h:49
VOID WINAPI InitCommonControls(void)
Definition: commctrl.c:863
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
#define GetProcessHeap()
Definition: compat.h:736
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
Definition: ole2.c:169
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
Definition: ole2.c:230
static const WCHAR Message[]
Definition: register.c:74
#define L(x)
Definition: ntvdm.h:50
BOOL WINAPI FileIconInit(BOOL bFullInit)
Definition: shellord.c:1883
#define _countof(array)
Definition: sndvol32.h:70
#define HKEY_CURRENT_USER
Definition: winreg.h:11
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define MB_ICONERROR
Definition: winuser.h:787
#define MessageBox
Definition: winuser.h:5831
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by _tWinMain().

Variable Documentation

◆ bExplorerIsShell

BOOL bExplorerIsShell = FALSE

◆ gModule

CExplorerModule gModule

Definition at line 37 of file explorer.cpp.

Referenced by InitializeAtlModule().

◆ gWinModule

CAtlWinModule gWinModule

Definition at line 38 of file explorer.cpp.

◆ hExplorerInstance

◆ hkExplorer

◆ hProcessHeap

HANDLE hProcessHeap

Definition at line 25 of file explorer.cpp.

Referenced by StartWithDesktop().