A desktop has a logical display surface and contains user
interface objects such as windows, menus, and hooks; it can be
used to create and manage windows. Each desktop object is a
securable object. When a desktop is created, it is associated
with the current window station of the calling process and
assigned to the calling thread. Window messages can be sent only
between processes that are on the same desktop. In addition, the
hook procedure of a process running on a particular desktop can
only receive messages intended for windows created in the same
desktop. The desktops associated with the interactive window
station, Winsta0, can be made to display a user interface and
receive user input, but only one of these desktops at a time is
active. This active desktop, also known as the input desktop, is
the one that is currently visible to the user and that receives
user input. Applications can use the OpenInputDesktop function
to get a handle to the input desktop. Applications that have the
required access can u