Patent Publication Number: US-2015082199-A1

Title: Document viewing mechanism for document sharing environment

Description:
TECHNICAL FIELD  
     This invention relates generally to the technology of application sharing and, more particularly, relates to a system and method for improving a viewer&#39;s experience during application sharing. 
     BACKGROUND 
     As computers and computer networks become more pervasive in the home and workplace, many established methods for performing everyday tasks are being replaced or streamlined through the use of computer networking technology. For example, employees are increasingly able to have a virtual presence in their workplace by logging into a computer network maintained by their employer. Perhaps the most striking development in computer networking technology today has been the advent of remote collaboration. 
     One of the oldest forms of processing data is the meeting or conference, whereby multiple individuals focus their attention on common subject matter to arrive at a joint decision, consensus, or product. Increasingly, such meetings are now taking place virtually over computer networks through the use of application sharing technologies. Such technologies enable a sharing user to share an application with various viewing users. The display produced by the application running on the sharers computer is made available via a computer network to the viewers&#39; computers. In some cases, the sharer may pass control of the application to a viewer, whereby that viewer&#39;s control inputs are then communicated back to the sharer&#39;s computer, where the actions associated with the inputs are executed, and the resulting changed display is shared back out to all viewers. 
     Although application sharing has many clear benefits and can play a critical role in maintaining or increasing productivity and cooperation, current application shading systems sometimes create a less than ideal user experience. For instance, the viewer display properties often are not optimized to suit the purposes of the sharer and viewer in sharing information. An example of this inefficiency appears in the way in which a particular window may be shared. Current systems generally display the shared window as it appears on the sharer&#39;s display, without accounting for the fact that only a subset of the window information is useful to the viewer. For example, when the viewer is not controlling a shared application, it is inefficient to display tool bars, menus and other application artifacts to the viewer who by definition =not activate them at that time 
     In addition, the display of such artifacts consumes valuable viewer area, wherein useful data could be displayed. Often, the shared window or information is scaled for presentation on the viewer display, so that the entire shared area fits within an application sharing window. In many cases, this requires that the shared display be scaled down to a lower resolution on the viewer&#39;s display than it has On the sharer&#39;s display. This reduction sometimes results in a document area that is difficult for the viewer to read or discern. 
     A new system and method are needed whereby sharing of window information during application sharing can be executed efficiently without unnecessarily imputing the quality of the viewer display. 
     SUMMARY 
     A novel system and method are described for constructing a display of shared information and for displaying shared information, so that application artifacts that are of no use to the viewer are not displayed to the viewer, and so that a maximum available portion of a viewing area can be used to display document content rather than such artifacts. 
     In an embodiment, a viewer-activated document view mode allows the viewer to limit the display of shared windows to the document content of such windows, omitting toolbars, menus and other artifacts that convey no information to the viewer and that are not usable by the viewer. 
     In a further embodiment of the invention, the viewer display is modified to show one or more application artifacts when a portion of one or more such artifacts intersects an application sharing view area on the viewer display. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       While the claims set forth features of the present invention with particularity, the invention, together with its objects and advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings of which: 
         FIG. 1  is a block diagram generally illustrating an exemplary computer system usable in an implementation of an embodiment of the invention; 
         FIG. 2  is a schematic diagram showing the architecture of a network system within which an embodiment of the invention may be implemented, including multiple computers comprising a sharer computer and viewer computers; 
         FIG. 3  is a schematic diagram illustrating in greater detail the placement and function of an application sharing program in an embodiment of the invention with respect to a sharer computer and a viewer computer; 
         FIG. 4A  is a simplified viewer screen representation showing a sharer display of a shared window including application artifact information such as a toolbar; 
         FIG. 4B  is a simplified viewer screen representation showing a sharer display of a shared window omitting application artifact information such as a toolbar; 
         FIG. 5  depicts simplified screen representations showing exemplary viewer displays before and after a sharing user performs an action at the sharing computer that creates a shared window that is at least partially contained in the document content area of the shared window; 
         FIG. 6  is a flow chart illustrating a process for identifying a document view sub-window according to an embodiment of the invention; and 
         FIG. 7  is a flow chart illustrating a process for constructing a display of a shared window at the viewing machine upon receipt of window data from the sharing machine according to an embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Turning to the drawings, wherein like reference numerals refer to like elements, the invention is illustrated as being implemented in a suitable computing environment Although not required, the invention will be described in the general context of computer executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures, etc, that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multi-processor systems, microprocessor based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention is primarily for use in a networked environment and may further be practiced in distributed computing environments where tasks are performed by remote processing device that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. 
       FIG. 1  illustrates an example of a suitable computing system environment  100  usable in an implementation of the invention. The computing system environment  100  is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment  100  be interpreted as having airy dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment  100 . 
     The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that are suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. 
     An exemplary system for implementing the invention includes a general-purpose computing device in the form of a computer  110 . Components of the computer  110  generally include, but are not limited to, a processing unit  120 , a system memory  130 , and a system bus  121  that couples various system components including the system memory to the processing unit  120 . The system bus  121  may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example only, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Associate (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus. 
     Computer  110  typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer  110  and includes both volatile and nonvolatile media, removable and non-removable media By way of example only and not limitation, computer readable media may comprise computer storage media and communication media. 
     Computer storage media includes volatile and nonvolatile, removable and non removable media implemented in any method or technology for storage of intonation such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer  110 . 
     Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics (such as, for example, voltage or current level, voltage or current pulse existence or nonexistence, voltage or current pulse width, voltage or current pulse spacing, etc.) set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media, Combinations of any of the above are also included within e scope of computer readable media. 
     The system memory  130  includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)  131  and random access memory (RAM)  131 . A basic input/output system  133  (BIOS), containing the basic routines that help to transfer information between elements within computer  110 , such as during start-up, is typically stored in ROM  131 , RAM  132  typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit  120 . By way of example, and not limitation,  FIG. 1  illustrates RAM  132  as containing operating system  134 , application programs  135 , other program modules  136 , and program data  137 . 
     The computer  110  may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,  FIG. 1  illustrates a hard disk drive  141  that roads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive  151  that reads from or writes to a removable. nonvolatile magnetic disk  152 , and an optical disk drive  155  that reads from or writes to a removable, nonvolatile optical disk  156  such as a CD-ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive  141  is typically connected to the system bus  121  through a non-removable memory interface such as interface  140 , and magnetic disk drive  151  and optical disk drive  155  are typically connected to the system bus  121  by a removable memory interface, such as interface  150 . 
     The drives and their associated computer storage media, disused above and illustrated in  FIG. 1 , provide storage of computer readable instructions, data structures, program modules and other data for the computer  110 . In  FIG. 1 , for example, hard disk drive  141  is illustrated a storing operating system  144 , application programs  145 , other program modules  146 , and program data  147 . Note that these components can either be the same as or different from operating system  134 , application programs  135 , other program modules  136 , and program data  137 . Operating system  144 , application programs  145 , other program modules  146 , and program data  147  are given different numbers herein to illustrate that at a minimum, they are different copies. A user may enter commands and information into the computer  110  through input devices such as a keyboard  162 , pointing device  161  (commonly referred to as a mouse), and trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit  120  through a user input interface  160  that is coupled to the system bus, but may be connected by other interact and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor  191  or other type of display device is also connected to the system bus  121  via an interface, such as a video interface  190 . In addition to the monitor, computers may also include other peripheral output devices such as speakers  197  and printer  196 , which may be connected through an output peripheral interface  195 . 
     In the implementation of an embodiment of the invention, the computer  110  operates in a networked environment using logical connections to one or more remote computers, such as a remote computer  180 . The remote computer  180  may be a personal computer, a router, a network PC, a peer device or other common network node, and in any case the remote computer or computers typically include any or all of the elements described above relative to the personal computer  110 , although only a memory storage device  181  has been illustrated in  FIG. 1 . The logical connections depicted in  FIG. 1  include a local area network (LAN)  171  and a wide area network (WAN)  173 , but the computer  110  may additionally or alternatively use one or more other networking environments. Networking environments of all types are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. 
     The computer  110  should include facilities for accessing the networks to which it is attachable. For example, when used in a LAN networking environment, the personal computer  110  is connected to the LAN  171  through a network interface or adapter  170 , Another node on the LAN, such as a proxy server, may be further connected to a WAN such as the Internet. When used in a WAN networking environment, the computer  110  typically includes a modem  172  or other means for establishing communications directly or indirectly over the WAN  173 , such as the Internet. The modem  172 , which may be internal or external, may be connected to the system bus  121  via the user input interface  160 , or other appropriate mechanism. In a networked environment, program modules depicted relative to the personal computer  110 , or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,  FIG. 1  illustrates remote application programs  185  as residing on memory device  181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. It is not intended to limit the invention to use in a hard-wired network environment, since it may also be used in transiently connected environments, such as for example a wholly or partially wireless network environment interconnected wholly or partially via optical, infrared, and/or radio frequency wireless connections. 
     Herein, the invention is described with reference to acts and symbolic representations of operations that are performed by one or more computers, unless indicated otherwise. As such, it will be understood that such its and operations, which are at nines referred to as being computer-executed, include the manipulation by the processing unit of the computer of electrical signals representing data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the computer in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the invention is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operation described hereinafter may also be implemented in hardware. 
       FIG. 2  illustrates schematically a networking environment in which the present invention in preferably implemented. The architecture of such a system comprises one or more viewer computers illustrated as computers  201 ,  203 , and  205 , connected to a sharer computer  207  via a network  209  Each computer  201 ,  203 ,  205 ,  207  is connected or connectable to the network  209  and hence to the others of computers  201 ,  203 ,  205 ,  207  via network connections  211 ,  213 ,  215 , and  217 . The network connections  211 ,  213 ,  215 ,  217  and computers  201 ,  203 ,  205 ,  207  may be as discussed above more generally with respect to  FIG. 1 . The network may be of any type, including, for example, a LAN, such as found in an office, university or other setting, a WAN such as the Internet, a MAN, or any other tangible or intangible, fixed or transient mechanism for computer interconnectivity. While higher data transfer rates are generally preferable to lower data transfer rates, them is no limit or requirement as to the speed of the network  209 . In addition, the network  209  may be a single network, or alternatively may be comprised of multiple networks of the same or different types and/or speeds. It will be understood that in many but not all cases, the network will further comprise routers, servers, and/or other computing devices in addition to the endpoint devices  201 ,  203 ,  205 ,  207  involved in the collaborative effort. 
     Specific exemplary architectures of the sharer computer  207  and a viewer computer  201  are illustrated in greater detail schematically in  FIG. 3 . It will be understood that although only one viewer computer is illustrated in  FIG. 3 , there can be more than one such computer in an implementation of the invention, as illustrated by way of  FIG. 2 . Sharer computer  307  is illustrated as being connected via networking connection  319  to viewer computer  301 . As will be appreciated by those of skill in the art network connection  319  can include some or all of the network types and network connections discussed above, as well as other network types and connections alternatively or additionally. 
     One or more user mode processes of interest  321  are running on sharer computer  307 . Such processes include processes, such as a program, from which information is being shared to one or more viewers such as at viewer computer  301 . The processes of interest  321  will be referred to hereinafter as shared processes, with the understanding that the information generated by the processes  321  need not be shared completely. That is, the information shared may consist of only a subset of the information generated by such a process  321  for display. Many shared processes can also be used in a non-shared manner. For example, a word processing program may be used by the sharer for non collaborative document production, and may then be used in a shared manner for group editing of the same or another document. In either mode, the processes  321  and the operating system of the sharer computer  307  perform certain steps. For example, whether or not the process  321  is shared, the output of the process  321  will still generally be output to the graphics display driver of the sharer computer  307 . 
     If the application sharing program  323  is active, such as during a sharing session, that other processes unique to the collaborative setting also take place. In particular, the application sharing program  323 , which is communicably linked to the process  321 , receives information from the process  321  and transfers information to the process  321 . Although the bidirectional flow of information between the process  321  and application sharing program is illustrated as being bi-directional, note that the mechanisms for transfer may vary depending upon direction of transfer. For example, the process  321  need not even be aware of the presence or operation of the application sharing program  323  for the application sharing program  323  to receive information from the process  321 . 
     Typically, the application sharing program  323  is communicably linked to an interceptor filter placed in the display path for the process  321 . Such a filter may be placed just before the graphics device interface (GDI) or similar interface in such a manner as to read, in a non-intrusive manner, all information sent to the screen of computer  307  by a shared process. In the WINDOWS operating system produced by MICROSOFT Corporation of Redmond, Wash., when an application wants to display an object, it calls a GDI function and sends the various parameters for the object. In turn, the GDI sends commands to the screen to cause it to actually paint the object. In contrast, the mechanism for transferring information from the application sharing program  323  to the process  321  need not involve the display path at all, and may instead involve a direct transfer of information. 
     Regardless, the application sharing program  323  is also communicably linked to the networking facilities  325  of the sharer computer  307 . Such facilities  325  may include any networking communications stack or other protocol arrangement as well as the hardware required for accessing the network connection  319 , as discussed above with respect to  FIG. 1 . Across the network connection  319 , a counterpart application sharing program  327  running on the viewer computer  307  is communicably linked to the sharer computer  307  via the network connection  319  and the networking facilities  329  of the viewer computer The networking facilities  329  may be similar to the networking facilities  325  of the sharer computer. The counterpart application sharing program  327  receives input from shared process  321  via the network connection  319  and also potentially from a user of the viewer computer  301 , via one or more input channels  331 , such as a keyboard, mouse, etc. as discussed above with respect to  FIG. 1 . Additionally, the counterpart application sharing program  327  outputs material for display to a display process  333  such as a GDI or similar interface, or other display process. Note that the sharing computer  307  also preferably includes input channels  335  such as those described above for receiving user input, some of which may be directed to and received by the process of interest  321 . 
     The communication between the sharer computer  307  and the viewer computer  301  over the network connection  319  during application sharing may comprise a screen data stream, an input data stream, and an application data stream. The screen data stream represents or is associated with the display on the screen or display of the sharer computer  307 , allowing the viewer computer  301  to reconstruct a bitmap representation of the shared window on its own associated display. The input data stream contains information regarding an interaction at the sharer or viewer of a user with an input device such as those described above with respect to  FIG. 1 . Finally, the application data stream contains data that allows the viewer to associate portions of the bitmap provided in the screen data stream with applications and/or windows produced by applications. In an embodiment of the invention, the beneficial functionality at the viewer machine  301  described herein may be facilitated via information placed into the application data stream by the application sharing program  323  at the sharer machine  307 . 
     There are two primary types of windows that the application sharing program analyzes to perform many of the functions associated with embodiments described herein. These types of windows are shared windows and unshared windows. The application data stream contains information about the shared windows as well as information about unshared windows that are relevant to the shared area, such as because of overlap with a shared window. For each window of concern, the application data stream contains information regarding the window&#39;s shape, size, and border position. From this information, the application sharing program at the viewing machine can determine what portions of the bitmap representation of the sharing machine&#39;s desktop should be shown at the viewer. The area shown is termed the “shared region.” The application data stream is further used by the application sharing program at the viewing machine to determine which portions of the sharer desktop should not be shown at the viewer. Such portions are termed “obscurable regions” or “obscured regions.” A region within the shared region corresponding to document content in a shared window is termed a “document view region” on the viewer display corresponding to a “document sub-window” at the sharer display. 
     The calculation of a document view region in the shared window is based on an identification of the document sub-window of the currently viewed top-level window of the relevant shared application. Although the regions will often be identical in content, there are situations where other shared windows hosted by the relevant application are added to the document view region as will be discussed below. 
     Any one of a number of methods may be used to indicate that a shared window contains a document sub-window. For known applications that provide a mechanism for distinguishing the sub-windows, an internal table may be maintained for associating window classes with document sub-windows. Thus, the application sharing program can share the top-level window and place a document view mark on the window indicating the presence of the sub-window. Alternatively or additionally, an API provided by the application sharing program object manager can be called with a sub-window in order to share the top-level window and place a document view mark on the window indicating the presence of the sub-windows Finally, a third party application can mark its own windows with a global atom to identify the presence and sharing of a sub-window. In this case, the application should use s recognized document view indicator, such as an atom name, and should use the appropriate operating system interaction mechanisms, such as Win32 APIs if the operating system is the WINDOWS brand operating system produced by MICROSOFT Corporation of Redmond, Wash. 
     Once a document view sub-window is identified, the application sliming program determines a hounding rectangle, such as by intersecting a document view sub-window with its ancestors. The sub-window bounding rectangle is then used to determine f any other top-level windows intersect the document view region. If a top-level window intersects the region but is not the parent of the document view sub-window, then the hounding rectangle is made to include that top-level window. 
     The general operation of the architecture and components usable in embodiments of the invention will be described briefly in overview before giving a detailed exposition of the processes involved in embodiments of the invention. In an embodiment of the invention, a shared window is displayed on the viewing machine  301  omitting certain application artifacts that are displayed on the sharer machine  30  When the application sharing program on the viewing machine  301  operates in a document view mode. Such artifacts include menus, toolbars, etc that are displayed at the sharer machine by the shared application to allow the sharing user to affect operation of a shared application. The document view mode discussed herein can preferably be automatically engaged or disengaged, and is preferably also engageable and disengageable by a user of the viewing computer. 
     The effect of the document view mode on the viewer display can be seen in overview by way of  FIGS. 4A and 4B .  FIG. 4A  is a simplified screen display representation of a shared application window on the sharer display. It can be seen that shared window  401  in display  403  has a document content area  405  and one or more application artifact was  407 . It will be understood that references herein to an application artifact area in the singular sense includes the case where the application artifact area is dispensed in two or more non-contiguous areas such as illustrated in  FIG. 4A , as well as the case where the application artifact area is localized in one contiguous area. The four arcuate shapes illustrated within the document content area  405  and other regions in the figures are intended to represent any appropriate user-created document content such as text, drawing, etc. 
       FIG. 4B  is a simplified screen display representation of the shared application window of  FIG. 4A  on a viewer display. The viewer display area  411  contains a representation  413  of the shared window. It can be seen that the viewer representation  413  of the shared window does not contain the application artifact areas  407  shown in  FIG. 4A . Rather, the entire application sharing display area  417  is substantiality filled with data  415  corresponding to the document content area  405  of the corresponding shared window on the sharer display. In this manner, the application sharing display area  417  is efficiently utilized to only display that information which it is important for the viewer to see. Thus, the size of fonts and other elements shown within the application sharing display area  417  may be larger than they would be if the user were to be presented with the entire contents of the shared window  403 . This is especially important when the application sharing display area  417  is substantially smaller than the shared window  403 , necessitating in most cases some amount of down scaling of the content of the document content area  405  of the shared window. In such cases, the sealed down content will remain more legible in the document view mode. Wherein only document content is shown to the viewer, than it otherwise would, enhancing the viewer&#39;s experience during application sharing, and enhancing the usefulness of the application sharing session to the sharing user. 
     In some cases, the transformation of the viewer display of the shared window as described above will even result in a magnification of the document content, while existing systems that do not transform the display would require at least minimal shrinkage of the document content. Such can occur when the application sharing display area  417  is smaller than the shared window  403  but larger than the document content area  405  of the shared window  403 . 
     There are primarily two situations when the application sharing program at the viewing machine preferably automatically shills from a mode in which the shared window is transformed as described above to a mode Where the shared window is not transformed and thus displays all or some application artifacts, in an application artifact area. The first such case is when the sharing user performs an action at the sharing computer that creates a child shared window that is partially contained in the document content and application artifact areas of the shared window  403 . 
     Exemplary viewer displays before and after such an action are illustrated in  FIG. 5 . In particular, display  501  corresponds to the shared window as displayed at the viewing machine before an additional shared window that overlaps the document content area at the sharing machine is created. The display  502  of the shared window corresponds to that of  FIG. 4B , and contains only document content  503  and does not contain an area corresponding to an application artifact area such as areas  407  in  FIG. 4A . When the user of the shining machine subsequently performs an action at the sharing computer that creates a shared window that is partially contained in the document content area oldie shared window  403  and partially contained in the application artifact area  407 , the viewer display of the shared window transforms to one such as that shown at display  505 . For example, such an action may be the activation of a toolbar item to create a drop-down menu  513 . When a shared window such as the drop down window list  513  partially overlaps the document content area  405  and the application artifact area at the sharing computer, the mode of the application sharing program at the viewing computer is switched such that the viewer display  504  of the shared window no longer omits application artifact areas, and hence does not omit any portion of the new window. Thus, the shared window  504  as displayed in display  505  contains a document content area  507  as well as an application artifact area  509  corresponding to associated areas in the sharing machine display of the shared window Note that if the new window  508  lies partially within the document content area and application artifact area, and partially outside of the shared window on the sharer display, then the viewer display scale of the shared window  506  is adjusted as shown in display  511  so that the entirety of the new window  508  is shown without clipping. Alternatively, the relative displayed sizes of the shared window  506  and the new window  508  may be diminished so that the entirety of the child image is displayed within the application sharing area  510 . 
     The second case wherein the mode of the application sharing program at the viewing computer is switched to display application artifact areas is when such area become usable by the viewing user. For example, when a sharing user cedes control of a shared application or document to the viewing user, the viewing user is preferably able to access and activate toolbar items and to make selections of options displayed by icon or otherwise in the application artifact area. Additionally, the viewing user is preferably able to manually deactivate the document view mode so that the viewing computer display always shows the entire shared window including application artifact areas. This mode may be useful when the application artifacts are not usable by the viewing user but are nonetheless important to the viewing user, such as when a sharing user is showing a viewing user how to use an application. 
     The processes involved in constructing the viewer display of a shared window is described hereinafter in greater detail with reference to  FIGS. 6 and 7 . In particular,  FIG. 6  illustrates a flow chart for a process of identifying a document view sub- window. The process is preferably executed by the application sharing program naming on the sharing machine, although such is not required to be the case. In step  601 , the program determines whether a particular top level shared window is marked, such as by a global atom, as containing a document view sub-window. If the window is not so marked, then in step  601 , the program determines whether the window class corresponding to the window under analysis is found in a window class table. The window class table associates known window classes with their sub-window classes, and is preferably pre-populated such as prior to distribution of the application sharing program, but may be alternatively populated through use by the application sharing program, or may be populated or augmented by a third party. 
     If at step  603  it is determined that the window class corresponding to the window under analysis is not in the window class table, then the process terminates for that window at node  605  having determined that no identifiable document view sub-window exists in the window under analysis. It instead at step  603  it is determined that the window class corresponding to the window under analysis is in the window class table, then the process flows to step  607  where, having identified the class of the relevant one or more document sub-windows, the program searches for the top-most document view sub window associated with the window under analysis. 
     At step  609 , the program determines whether a document view sub-window was identified in step  607 . If such a document view sub-window has been identified, then the process flows to step  611 , where the mark on the sub-window is updated to indicate that the identified sub-window is the top-most document view sub-window for the associated application. Finally, the process terminates at step  613 , where the identified and marked document view sub-window is utilized to facilitate construction of the viewer display of the shared window. However, it is instead determined at step  609  that a document view sub-window was not identifiable in step  607 , then the process terminates at node  605 , having determined that no identifiable document view sub-window exists in the window under analysis Note that the document window mark can be added to a shared window by the application that is shared, and in this case the application need not fill or modify the class table. 
     Alternatively, if at step  601  it was determined that the top level shared window under analysis is marked as containing a document view sub-window, then the process flows to step  615 , where the document view sub-window is extruded according to the mark. Subsequently, at step  617 , the application sharing program determines whether the extracted document view sub-window is still valid. For example, if the sub-window was dosed after the parent window was marked, then the sub-window may be considered invalid. If it is determined at step  617  that the extracted document view sub-window is no longer valid, then the process continues to step  603  and the steps that logically follow thereafter. If instead it is determined at step  617  that the extracted document view sub window is still valid, then the process moves to step  619 . 
     At step  619  the program determines whether the identified sub-window is still top-most of the document sub-windows associated with the same parent window. If at step  619  it is determined that the identified sub-window is still top-most, then the process terminates at node  613 . If instead it is determined that the identified sub-window is not still top-most, then the process flows to step  621  where the program locates the top-most document view sub-window associated with the parent window under analysis and updates the mark thereon. Subsequently, the process terminates at node  613 . Note that a document view sub-window can become invalid by loosing activation. That is, it there are two MDI child windows and the one that it is indicated by the mark becomes deactivated, with the other window being activated instead, then the first window may be considered invalid. It can be seen that at the conclusion of the process shown in the flow chart of  FIG. 6 , either a document view sub-window of interest will have been found, or it will have been determined that there exists no identifiable document view sub-window. In the former case, a document view is constructed according to a process to be discussed hereinafter, while in the latter, the viewer display of the shared window does not use a document view, but instead shows the entire shared window as it appears on the sharer display. 
     The flow chart of  FIG. 7  illustrates a process by which a display of the shared window is constructed at the viewing machine upon receipt of a list of window data from the sharing machine. Note that the process of  FIG. 7  processes window data to operate on five regions: a Shared region, an Obscured region, a DVShared region, a DVObscured region, and a DVSwitch region. The process of  FIG. 7  is described in the context of the application sharing program at the viewing machine, although the processing may alternatively be executed at another location and/or through another component. At step  701  of the process, the application sharing program at the viewing machine initializes each aforementioned region to zero content. At step  703 , the program selects for analysis a window from the received list of windows. Typically, the window data will be listed in the list of windows in reverse order, and the application sharing program at the viewing machine will select windows from the list in order. Accordingly, the first window analyzed is preferably but not necessarily the lowest z-order window. At step  705 , the program determines whether the current window is shared,  11  it is determined at step  705  that the current window is shared, then at step  707  it is determined whether the current window contains an identified document view sub-window, or intersects the current DVShared region. 
     If at step  707  it is determined that the current window contains an identified document view sub-window or intersects the current DVShared region, then at step  709 , it is determined whether the current window intersects any shared region not in the DVShared region. If it is determined that the current window intersects a shared region not in the DVShared region, then the process flows to step  711 , where the current window is added to the DVSwitch region. Subsequently at step  713 , the DV rectangle of the current window, if any, is added to the DVShared region. Note that if at step  709  it is determined that the current window does not intersect a shared region not in the DVShared region, then the process flows directly to step  713 . 
     At step  715 , the DV rectangle is subtracted from the DVObscured region. Next, the process executes step  717 , wherein the cumin window is added to the shared region. Note that if it is determined at step  707  that the current window does not contain an identified document view sub-window or intersect the current DVShared region, the process proceeds directly to step  717 . After executing step  717 , the process flows to step  719 , where the region of the current rectangle is subtracted from the DVObscured region. If it is determined at step  720  that there are more windows from the received list of windows to be analyzed, then the process returns to step  705 . Otherwise, it moves to step  721  whereat the program determines whether the DVSwitch region is a null region and the DVShared region is not a null region. If it is determined that the DVSwitch region is a null region and the DVShared region is not a null region, then at step  723 , the program clips the currently shared view content using the DVShared and DVObscured regions. Otherwise, at step  725  the program clips the currently shared view content using the Shared and Obscured regions. 
     If at step  705  it is instead determined that the current window is not shared, then at step  706 , the intersection of the current window&#39;s region and the Shared region is determined and stored. This information may be stored as a temporary region variable. Subsequently, at step  708 , the determined intersection region is added to the Obscured region, and the process flows to step  710 . At step  710 , the determined intersection region is subtracted from the Shared region, and the process flows to step  712 , wherein the determined intersection region is subtracted from the DVSwitch region. Subsequently, at step  714 , the determined intersection region is clipped via intersection with the DVShared region. That is, the intersection of the determined intersection region and the DVShared region is subtracted from the determined intersection region. At step  716  the determined intersection region is subtracted from the DVShared region, after which the determined intersection, region is added to the DVObscured region at step  718 . From  718 , the process flows to step  720  and the steps that logically follow thereafter. 
     Note that as mentioned above the process of generating a document view display rather than showing all application artifacts in the shared window is preferably user settable and thus may be turned off. In this case, the process described by way of  FIG. 7  would not need to be executed, and the visible portions of the shared window would appear the same, other than perhaps in scale, on both the sharing machine and in the viewing machine representation. 
     It will be appreciated that a novel and useful system and method have been described herein for constructing a display of shared information and for displaying shared information, so that a greater percentage of a viewing area can be used to display document content rather than application artifacts. In view of the many possible embodiments to which the principles of this invention may be applied, it should be recognized that the embodiments described herein with respect to the drawing figures are meant to be illustrative only and should riot be taken as limiting the scope of invention. For example, those of skill in the art will recognize that the elements of the illustrated embodiment shown in software may be implemented in hardware and vice versa or that the illustrated embodiment can be modified in arrangement and detail without departing from the spirit of the invention. Furthermore, although network connections are illustrated herein as lines, no limitation should thereby be imparted to the invention. Network connections may be circuit-switched, packet-switched, or otherwise, and may be transient or permanent, hard-wired or wireless, operating via any suitable protocol. Also note that although embodiments of the invention have been described largely by reference to a sharing program that is separate from the shared process, the sharing program may not be a stand-alone program, hut may instead be an integral part of the shared process itself, or may be a DLL or other in-process entity. 
     Moreover, the exact step orders and process parameters may be varied without departing from the scope of the invention. It will be further understood that although the examples herein often refer to a sharer and a viewer computer, any number of such sharers and viewers may be involved, and a viewer may become a sharer and a sharer may become a viewer without limitation. In addition, although the foregoing description gives a number of examples wherein one or more windows are processed no limitation to windows is intended. That is, other types of graphical display objects may also be involved in the aforementioned processes and system, so long as they can be separated into a content area and an application artifact area. Such other graphical objects include but are not limited to non-rectilinear objects rendered on the sharer display. 
     Furthermore, references herein to application sharing are not meant to require that all windows or material displayed on a sharer display and associated with a particular application are shared or unshared. Rather, one or more windows associated with an application running on the sharer machine are preferably sharable without requiring the sharing of all windows associated with that instance of that application. Moreover, although the steps employed to construct the viewer display are discussed herein with reference to the application sharing program of the sharing computer or the viewing computer, such steps may alternatively be executed in whole or in part at a device other than that swilled in the foregoing discussion of examples. 
     Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.