mirror of
https://github.com/reactos/reactos.git
synced 2025-01-04 21:38:43 +00:00
merge from trunk: hide login screen to make the login on XP faster
svn path=/branches/lean-explorer/; revision=14435
This commit is contained in:
parent
ddef57fcd4
commit
f2cca3cd47
1 changed files with 27 additions and 1 deletions
|
@ -601,6 +601,19 @@ int main(int argc, char* argv[])
|
|||
#endif // __MINGW && UNICODE
|
||||
|
||||
|
||||
static bool SetShellReadyEvent(LPCTSTR evtName)
|
||||
{
|
||||
HANDLE hEvent = OpenEvent(EVENT_MODIFY_STATE, FALSE, evtName);
|
||||
if (!hEvent)
|
||||
return false;
|
||||
|
||||
SetEvent(hEvent);
|
||||
CloseHandle(hEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)
|
||||
{
|
||||
CONTEXT("WinMain()");
|
||||
|
@ -646,10 +659,14 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
|||
}
|
||||
|
||||
startup_desktop = TRUE;
|
||||
} else
|
||||
} else {
|
||||
// create desktop window and task bar only, if there is no other shell and we are
|
||||
// the first explorer instance
|
||||
// MS Explorer looks additionally into the registry entry HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell,
|
||||
// to decide wether it is currently configured as shell application.
|
||||
startup_desktop = !any_desktop_running;
|
||||
}
|
||||
|
||||
|
||||
bool autostart = !any_desktop_running;
|
||||
|
||||
|
@ -674,6 +691,14 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
|||
if (_tcsstr(lpCmdLine,TEXT("-noautostart")))
|
||||
autostart = false;
|
||||
|
||||
if (startup_desktop) {
|
||||
// hide the XP login screen (Credit to Nicolas Escuder)
|
||||
// another undocumented event: "Global\\msgina: ReturnToWelcome"
|
||||
if (!SetShellReadyEvent(TEXT("msgina: ShellReadyEvent")))
|
||||
SetShellReadyEvent(TEXT("Global\\msgina: ShellReadyEvent"));
|
||||
}
|
||||
|
||||
|
||||
g_Globals.init(hInstance);
|
||||
|
||||
// initialize COM and OLE before creating the desktop window
|
||||
|
@ -684,6 +709,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
|||
|
||||
g_Globals._hwndDesktop = DesktopWindow::Create();
|
||||
|
||||
/**TODO launching autostart programs can be moved into a background thread. */
|
||||
if (autostart) {
|
||||
char* argv[] = {"", "s"}; // call startup routine in SESSION_START mode
|
||||
startup(2, argv);
|
||||
|
|
Loading…
Reference in a new issue