mirror of
https://github.com/reactos/wine.git
synced 2025-02-13 08:44:54 +00:00
user32: Don't start explorer.exe on non-visible window stations.
This commit is contained in:
parent
bd2ee68d6d
commit
bd09340cf2
@ -1620,30 +1620,35 @@ HWND WINAPI GetDesktopWindow(void)
|
||||
|
||||
if (!thread_info->desktop)
|
||||
{
|
||||
static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0};
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
|
||||
|
||||
memset( &si, 0, sizeof(si) );
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESTDHANDLES;
|
||||
si.hStdInput = 0;
|
||||
si.hStdOutput = 0;
|
||||
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
|
||||
|
||||
GetSystemDirectoryW( cmdline, MAX_PATH );
|
||||
lstrcatW( cmdline, command_line );
|
||||
if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
|
||||
NULL, NULL, &si, &pi ))
|
||||
USEROBJECTFLAGS flags;
|
||||
if (!GetUserObjectInformationW( GetProcessWindowStation(), UOI_FLAGS, &flags,
|
||||
sizeof(flags), NULL ) || (flags.dwFlags & WSF_VISIBLE))
|
||||
{
|
||||
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
|
||||
WaitForInputIdle( pi.hProcess, 10000 );
|
||||
CloseHandle( pi.hThread );
|
||||
CloseHandle( pi.hProcess );
|
||||
static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0};
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
|
||||
|
||||
memset( &si, 0, sizeof(si) );
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESTDHANDLES;
|
||||
si.hStdInput = 0;
|
||||
si.hStdOutput = 0;
|
||||
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
|
||||
|
||||
GetSystemDirectoryW( cmdline, MAX_PATH );
|
||||
lstrcatW( cmdline, command_line );
|
||||
if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
|
||||
NULL, NULL, &si, &pi ))
|
||||
{
|
||||
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
|
||||
WaitForInputIdle( pi.hProcess, 10000 );
|
||||
CloseHandle( pi.hThread );
|
||||
CloseHandle( pi.hProcess );
|
||||
}
|
||||
else WARN( "failed to start explorer, err %d\n", GetLastError() );
|
||||
}
|
||||
else WARN( "failed to start explorer, err %d\n", GetLastError() );
|
||||
else TRACE( "not starting explorer since winstation is not visible\n" );
|
||||
|
||||
SERVER_START_REQ( get_desktop_window )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user