OpenDesktop

The OpenDesktop function returns a handle to an existing desktop. A desktop is a secure object contained within a window station object. A desktop has a logical display surface and contains windows, menus and hooks.

HDESK OpenDesktop(
  LPTSTR lpszDesktop,    // name of the desktop to open
  DWORD dwFlags,         // flags to control interaction with other applications
  BOOL fInherit,         // specifies whether returned handle is inheritable
  DWORD dwDesiredAccess  // specifies access of returned handle
);
 

Parameters

lpszDesktop
Pointer to null-terminated string specifying the name of the desktop to be opened. Desktop names are case-insensitive.
dwFlags
A bit flag parameter that controls how the calling application will cooperate with other applications on the desktop. This parameter can specify zero or the following value:
Value Description
DF_ALLOWOTHERACCOUNTHOOK Allows processes running in other accounts on the desktop to set hooks in this process.

fInherit
Specifies whether the returned handle is inherited when a new process is created. If this value is TRUE, new processes will inherit the handle.
dwDesiredAccess
Specifies the access rights the returned handle has to the desktop. This parameter can include any of the standard access rights, such as READ_CONTROL or WRITE_DAC, and a combination of the following desktop-specific access rights.
Value Description
DESKTOP_CREATEMENU Required to create a menu on the desktop.
DESKTOP_CREATEWINDOW Required to create a window on the desktop.
DESKTOP_ENUMERATE Required for the desktop to be enumerated.
DESKTOP_HOOKCONTROL Required to establish any of the window hooks.
DESKTOP_JOURNALPLAYBACK Required to perform journal playback on the desktop.
DESKTOP_JOURNALRECORD Required to perform journal recording on the desktop.
DESKTOP_READOBJECTS Required to read objects on the desktop.
DESKTOP_SWITCHDESKTOP Required to activate the desktop using SwitchDesktop.
DESKTOP_WRITEOBJECTS Required to write objects on the desktop.

Return Values

If the function succeeds, the return value is a handle to the opened desktop. When you are finished using the handle, call the CloseDesktop function to close it.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

The calling process must have an associated window station, either assigned by the system at process creation time or set by the SetProcessWindowStation function.

If the dwDesiredAccess parameter specifies the READ_CONTROL, WRITE_DAC, or WRITE_OWNER standard access rights to access the security descriptor of the desktop object, you must also request the DESKTOP_READOBJECTS and DESKTOP_WRITEOBJECTS access rights.

QuickInfo

  Windows NT: Requires version 3.51 or later.
  Windows: Unsupported.
  Windows CE: Unsupported.
  Header: Declared in winuser.h.
  Import Library: Use user32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows NT.

See Also

Window Stations and Desktops Overview, Window Station and Desktop Functions, CloseDesktop, CreateDesktop, SetProcessWindowStation, SetThreadDesktop, SwitchDesktop