The present invention is directed towards a translation software that provides remote access to an application program that is executing on a host machine in its native operating system environment. The translation software monitors messages that are relayed from the application program to an application interface that is provided via the native operating system. Upon recognizing a message that affects a graphical user interface of the native operating system, the translation software converts the message into a protocol that is recognized by a remote graphical user interface. By monitoring and converting messages in this fashion, the translation software allows the application program to be displayed remotely.

Patent
   5831609
Priority
Jun 17 1994
Filed
Jun 06 1995
Issued
Nov 03 1998
Expiry
Nov 03 2015
Assg.orig
Entity
Small
96
12
all paid
1. A method for running an application as an x-Client so as to enable the application to be displayed with an x-Windows manager, the method comprising the steps of:
launching a "WINDOWS/NT" session;
invoking an application from within the "WINDOWS/NT" session;
monitoring output messages that are sent from the application;
determining that one of the monitored output messages is a graphical user interface command; and
when the monitored output message is a graphical user interface command, enabling an x-Windows manager program to act on the command, and informing the "WINDOWS/NT" device driver of results of the command that was acted on by the x-Windows manager program, wherein the enabling step includes converting the graphical user interface command from a "WINDOWS/NT" format into a format that is recognized by x-Windows manager program to enable the x-Windows manager program to act on the command.
4. A method for providing remote user interaction with an application program that is being run in its native environment on a host machine, the native environment providing a local graphical user interface for allowing local user interaction with the application program, the method comprising the steps of:
determining when the application program has sent a command to the local graphical user interface;
suspending the native environment's ability to process the determined command;
converting the determined command to a protocol that is recognizable by a remote graphical user interface; and
sending the converted command to the remote graphical user interface to enable the remote graphical user interface to act on the converted command, wherein the local graphical user interface is a graphical user interface of WINDOWS or WINDOWS/NT and the remote graphical user interface is an x-Windows graphical user interface.
6. A computer system that executes an application program using an operating system that includes a first graphical user interface that has an ability to process graphical user interface commands, the computer system comprising:
a monitoring device that determines that the application program has sent a command to the first graphical user interface, the command being in a first format that is recognizable by the first graphical user interface;
a disabling device that suspends the local first graphical user interface's ability to process the determined command; and
a modifier that converts the determined command from the first format to a second format that is recognizable by a second graphical user interface and sends the converted command to the second graphical user interface to enable the second graphical user interface to act on the converted command, wherein the first graphical user interface is a graphical user interface of WINDOWS or WINDOWS/NT and the second graphical user interface is an x-Windows graphical user interface.
9. A method for translating, from a first graphical operating system to a second graphical operating system, commands of an application program that is executing in the first graphical environment wherein the first graphical operating system does not provide for a remote display of the application program, and wherein the second graphical operating system does provide for the remote display of the application program, the method comprising the steps of:
monitoring device driver calls that are made by the application program;
determining when one of the monitored device driver calls is targeted for a window that is owned by the application program; and
whenever one of the monitored device driver calls is targeted for the window that is owned by the application program, issuing appropriate commands in the second graphical operating system in order to accomplish an effect on a remote display that is controlled by the second graphical operating system, wherein the first graphical operating system is WINDOWS or WINDOWS/NT and the second graphical operating system includes x-Windows.
7. A method for allowing a Windows or "WINDOWS/NT" application to run in its native environment in addition to running as an x-Client using an x window manager so as to enable the application to be displayed on a remote x-Terminal, the method comprising the steps of:
remotely launching the Windows or "WINDOWS/NT" application;
monitoring system calls and display-driver calls that are made by the Windows or "WINDOWS/NT" application;
determining whether one of the monitored system calls is a graphical user interface related command;
determining whether one of the monitored system calls would affect an internal state of a window owned by the Windows or "WINDOWS/NT" application; and
whenever one of the monitored system calls is a graphical user interface command and whenever one of the monitored system calls would affect the internal state of the window owned by the Windows or "WINDOWS/NT" application program, converting the system call into one or more graphical user interface command recognizable by the x window manager, causing the x window manager to execute the one or more graphical user interface commands on the remote x-Terminal and then allowing an operating system of the native environment to process the call.
2. A method for providing remote display and interaction with an application program that is executing on a local machine, the local machine executing the application program using a native operating system, wherein the native operating system includes a local application interface structured to respond to graphical user interface commands from the application program, and a local graphical user interface, the method comprising the steps of:
detecting a graphical user interface command that is output from the application program to the application interface;
converting the detected graphical user interface command from a first format to a second format, the first format being recognizable by the local graphical user interface and not recognizable by a remote graphical user interface and the second format being recognizable by the remote graphical user interface and not recognizable by the local graphical user interface, wherein the local graphical user interface is a graphical user interface of WINDOWS or WINDOWS/NT; and
sending the converted command to the remote graphical user interface so that the detected message can be interpreted by the remote graphical user interface wherein the remote graphical user interface, is an x-Windows graphical user interface.
8. A method for execution-time translation from a first graphical operating system to a second graphical operating system wherein the first graphical operating system does not provide for remotely displaying application programs, and wherein the second graphical operating system does provide for remotely displaying application programs, the method comprising the steps of:
monitoring system calls that are made by an application program that is executing in the first graphical operating system;
determining whether one of the monitored system calls is a graphical user interface related command;
determining whether one of the monitored system calls would affect an internal state of a window that is owned by the application program that is executing in the first graphical operating system; and
whenever one of the monitored system calls is a graphical user interface command and whenever one of the monitored system calls would affect the internal state of the window that is owned by the application program that is executing in the first graphical operating system, converting the system call into one or more graphical user interface command recognizable by the second graphical operating system, causing the second graphical operating system to execute the one or more graphical user interface commands converted from the system call to affect a remote display screen controlled by the second graphical operating system and then allowing the first graphical operating system to process the system call, wherein the first graphical operating system is WINDOWS or WINDOWS/NT and the second graphical operating system includes x-Windows.
3. The method of claim 2 wherein the remote graphical user interface is a graphical user interface known as x.
5. The method of claim 4 wherein the remote graphical user interface is a graphical user interface known as x.
10. The method of claim 9, further comprising the step of:
allowing the first graphical operating system to process the monitored device driver call only after issuing the appropriate commands in the second graphical operating system.
11. The method of claim 9, further comprising the steps of:
monitoring application program interface calls that are made by the application program;
determining when one of the monitored application program interface calls is a graphical user interface command; and
whenever one of the monitored application program interface calls is a graphical user interface command, issuing appropriate commands in the second graphical operating system in order to accomplish an effect on the remote display that is controlled by the second graphical operating system .

This application is a continuation-in-part of U.S. application Ser. No. 08/261,492 filed on Jun. 17, 1994, now abandoned.

The present invention relates to execution-time translation between different graphical user interface systems and in particular, includes a method and system that allows applications written for local-display systems to utilize the remote display capabilities of a different graphical user interface system.

Currently, there are approximately 50 million computer users that utilize a graphical user interface known as "WINDOWS" by "MICROSOFT" Corporation. Currently, "MICROSOFT's WINDOWS/NT" is rapidly emerging as a preferred operating system. Consequently, a large number of application programs are written to be compatible with "WINDOWS/NT." "WINDOWS/NT" provides a single graphical user interface in which all these application programs must adhere to. However, a client/server window system known as "X," initially developed at the Massachusetts's Institute of Technology, provides a protocol (X-Protocol) that allows application programs to be displayed remotely on one or more graphical user interfaces (e.g., Motif, Open-Look). Unfortunately, the application programs that are developed for the "WINDOWS/NT" operating system are not compatible with the X-Protocol. Consequently, users of the X-Client/Server window system do not have convenient access to these application programs. This is unfortunate because many of the application programs developed for the "WINDOWS/NT" operating system are superior, in terms of cost and features, to those than developed for the X-Client/Server window system.

The present invention is directed towards translation software that provides remote access to an application program. More specifically, the translation software provides remote access to an application program that is executing on a host machine in its native operating system environment. The translation software monitors messages that are relayed from the application program to an application interface that is provided via the native operating system. Upon recognizing a message that affects a graphical user interface of the native operating system, the translation software converts the message into a protocol that is recognized by a remote graphical user interface. The translation software also monitors and converts commands at the driver level. By monitoring and converting messages in this fashion, the translation software allows the application program to be displayed remotely.

FIG. 1 illustrates a preferred embodiment of the present invention.

FIG. 2 compares system design structures for a client/server window system and an operating system.

FIG. 3 is a flow diagram of the processing steps of the preferred embodiment of the present invention.

FIG. 4 illustrates a flow diagram of the processing steps of an application program (prior art).

FIG. 5 illustrates a flow diagram of the processing steps for the interaction between the application program and a native operating system (prior art).

FIG. 6 illustrates a flow diagram of the processing steps for an example according to a preferred embodiment of the present invention.

The present invention is directed towards a translation software that allows an application program written for a particular graphical user interface system (GUI) to be displayed on another graphical user interface system at execution time. The GUI upon which the application program is displayed is referred to as the target GUI. If the target GUI is capable of remote display over a network, the translation software allows the application program to be displayed and interacted with remotely while it executes within its native (non-remote) GUI.

In its preferred embodiment, the present invention provides for translation from Windows and "WINDOWS/NT" to the X-Window System and thus allows for the remote display of applications developed for "MICROSOFT WINDOWS" and "WINDOWS/NT" on X-Terminals and X-Servers. More specifically, the preferred embodiment allows each such application to appear as a fully compatible X-Client program to remote X-Servers. The term "X-Client" refers to an application program that utilizes the previously described X-Protocol. The term "X-Terminal" refers to any display component (e.g., standalone terminal or workstation) that is a display component of an X-Client/Server windowing system. The term "X-Server" refers to the software that controls the display hardware (e.g., a video display, a keyboard, or mouse) and is responsible for conducting the drawing and rendering of the video display. An attractive feature of an X-Client program is that it may be displayed and/or interacted with (e.g., via mouse, keyboard, etc.) on any X-Terminal provided there is a suitable communications link (typically, but not restricted to, the TCP/IP protocol described below) connecting the machine the X-Client is running on and the X-Terminal.

In the X-Client/Server window system an X-Client communicates with the underlying hardware (e.g., display, mouse, keyboard, etc.) via the X-Server. A separate X-Client, known as a window manager, coordinates with the X-Server to manage the display. More specifically, the window manager keeps track of the state of all X-Windows. The term "X-Window" refers to any portion of an X-Terminal's display that contains its own data (e.g., a document or a message). A primary advantage of the X-Client/Server window system is that it does not constrain an X-Client to the use of any particular window manager. Instead, a user may select the window manager that the user believes offers the most attractive look and feel.

FIG. 1 illustrates a preferred embodiment of the present invention. A host computer 110 executes application programs such as "MICROSOFT EXCEL" 120 and "WORD FOR WINDOWS" 130 under the "WINDOWS/NT" operating system 140. The "WINDOWS/NT" operating system, as well as the application programs 120, 130, are contained within a main memory of the host computer. More specifically, a central processing unit contained within the host computer 110 executes the instructions of both the "WINDOWS/NT" operating system 140 and the application programs 120, 130. The "WINDOWS/NT" operating system provides an application program interface (API) that allows these application programs 120, 130 to communicate with the operating system 140. Additionally, the "WINDOWS/NT" operating system also provides a standard graphical user interface (GUI) that defines the look and feel for all applications running under "WINDOWS/NT." This standard graphical user interface is designed to receive commands from the application program. In brief, the application programs 120, 130 utilize the application interface to request the operating system to conduct a variety of tasks. For example, representative tasks include the opening and closing of files, as well as making various adjustments to the graphical user interface. However, the "WINDOWS/NT" operating system does not provide for remote interaction with applications. In its preferred embodiment, the present invention overcomes this limitation of "WINDOWS/NT" by allowing application programs 120, 130 to be executed on the host computer while being displayed remotely on an X-Terminal 150. In this manner, the present invention allows users of the X-Client/Server window system to gain access to applications developed for the "WINDOWS/NT" operating system. Moreover, as the preferred embodiment of the present invention allows the application programs 120, 130 to be executed in their native operating system environments (e.g., the "WINDOWS/NT" operating system 140), the present invention provides such access in a highly efficient manner.

As illustrated, the host computer 110 is connected to the X-Terminals 150 via a network connection such as the TCP/IP protocol used on the Ethernet. In brief, this protocol consists of a series of layers. More specifically, the five lower-most layers in ascending order are; the wire, the Ethernet, the Internet protocol (IP layer), the transport control protocol (TCP layer) and the X-Protocol. This network connection is conceptually illustrated by reference 160.

As described above, the X-Client/Server window system utilizes two components: an X-Server 170 and a window manager 180. The window manager 180 manages X-Windows by keeping track of how many X-Windows are currently displayed, where the X-Windows are currently displayed, etc. As the present invention converts the "WINDOWS/NT" application to a fully compatible X-Client, a user may select a particular window manager 180 (e.g., Motif, Open-Look, Tom's Window Manager) for use with the present invention. In brief, the window manager 180 receives commands that relate to the display of the X-Terminals 150. As the window manager 180 may be contained within the X-Terminal itself or on the network, the window manager may receive commands over the network connection 160 or directly from the X-Terminals 150.

FIG. 2 compares system design structures for a client/server window system and an operating system. More specifically, FIG. 2 compares the system design structure of the X-Client/Server windowing system and the "WINDOWS/NT" operating system. A knowledge of these structures is helpful when discussing the processing steps described in FIGS. 3-6.

In "WINDOWS/NT" programs (e.g., application programs) are provided with a standard interface to the hardware 205 (e.g., display, keyboard, mouse, etc.) via device drivers 210. The various components 215 of the "WINDOWS/NT" operating system are layered above the device driver. One such component is Graphics Device Interface 220 (GDI). The GDI allows applications programs to describe graphical information without reference to the underlying hardware. The Application Program Interface 225 (API) exists above the "WINDOWS/NT" components layer. The API contains the notion of windows, icons, cursors, and other resources. "WINDOWS/NT" is an event driven, message based system. Various programs communicate with each other and with "WINDOWS/NT" by passing messages via the API. In regards to graphically displayed information, the API utilizes high-level constructs such as windows or icons. In contrast, the video device driver utilizes lower-level representations of graphical data (e.g., bitmap data). One of the purposes of the video device driver is to relay this bitmap data to the display device. For example, when the user moves or resizes a window, a large number of BitBlts (block transfers of bitmap data) are executed by the display driver.

The X-Server-Client windowing system is structured somewhat similarly to the "WINDOWS/NT" operating system. An X-Server 230 provides a standard interface to the underlying hardware 235. A library, Xlib 240, provides a (lower level) programmers' interface for X. When the X-Client is run locally, the X-Client issues commands from the Xlib library 240 to access the local hardware 235 through the X-Server 230. Similarly, when the X-Client is run remotely, the X-Client issues commands from the Xlib library 240 to access the remote hardware. In this case, network packets which represent elements of the X-Protocol are sent to the X-Server 230 that serves the remote hardware 235. Like "WINDOWS/NT," X is an event driven system and an X-Client may request the X-Server 230 to send it X-Events of interest (such as the mouse entering or leaving a window, the user clicking in a window, etc.). As mentioned above, a special X-Client program, the window manager 245, allows the user to manage displayed windows, define menus, etc. Above the relatively low-level Xlib interface, a X-Toolkits 250 provides a higher level programmers interface. There are many such toolkits which are available commercially (e.g., the "XT," "ANDREW," and "MOTIF" toolkits). Each toolkit comes with a collection of Widgets 255, which are useful collection of X objects (for example, a scrollable text window Widget). Having provided a comparison of the structures of the X-Client/Windowing system and the "WINDOWS/NT" operating system, the processing steps of a preferred embodiment of the present invention will now be described.

FIG. 3 illustrates the processing steps of a preferred embodiment of the present invention. More specifically, FIG. 3 illustrates an overview of the processing steps taken by the translation software to translate a natively executing application program into a fully compatible client of a non-native windowing system. Initially, an application program is executed in its native environment (step 305). For example, in one preferred embodiment, this native environment is the "WINDOWS/NT" operating system. Once the application program is executing in its native environment, the translation software monitors system calls that the application relays to the native environment via the native environment's application program interface (step 310). For example, in a preferred embodiment, the translation software monitors the commands that are relayed from the application program to the application program interface provided by "WINDOWS/NT").

For each monitored system call, the translation software evaluates whether the command represented by the API call is window management related (step 315). A command is "window management related" when the results of the command alter the positioning of the application program's window (e.g., moving, resizing, stacking the application program's window). Thus, step 315 operates as a high-level intercept between the application program and the native operating system.

When the API command is window management related, the translation software preferably suspends the native device driver's (e.g., the mouse driver, the keyboard driver, the display driver) ability to process the command (step 315, YES PATHWAY and step 320). In some instances, suspending the native device driver's ability to process the command is advantageous as it greatly increases the system's response time. For example, by suspending the native display driver while a window is being moved, the native display driver does not continuously redraw the window's image as the user drags the window across the display. As a result, the display driver does not continuously send the BitBlts (blocks of bitmap data) that represent the window's image to the display hardware. Consequently, and especially in systems where a local display of the natively-executing application is not desired, system performance is greatly improved due to the reduction in unnecessary data transfer. After suspending the native device driver, the translation software converts the command into a format that is recognizable by the target GUI (step 325). In a preferred embodiment, this target GUI adheres to a protocol known as the X-Protocol. Consequently, the translation software converts the API command to a command of the X-Protocol (e.g., a command from the Xlib library). Once the command has been converted, the translation software forwards the command to the target GUI system (step 330). For example, in a preferred embodiment this command is forwarded to a window manager. The window manager then effectuates the converted command via the X-Server. As an optional step, the translation software can also pass the command to the native GUI system so that window management may be effectuated on a local native display (step 335). Whether or not the above optional step is performed, the translation software releases the native device driver from its suspended state (step 335).

Referring back to step 315, when the monitored command is not window management related, the translation software passes the command to the application program's native operating system (step 315, NO PATHWAY, and step 340). Subsequently, the translation software intercepts each system call at the device driver level and determines when the system call will affect the internal state of the application program's window (steps 340 and 345). Thus, steps 340 and 345 operate as a low-level intercept between the application program and the native operating system. For the case where the system call will not affect the internal state of the application program's window, the translation software allows the application program to execute in its normal fashion (step 345, NO PATHWAY, and step 305). On the other hand, when the system call will affect the internal state of the application program's window, the translation software converts the system call to a target GUI call after suspending the native device driver (step 345, YES PATHWAY, steps 320 and 325). After translating the system call, the translation software forwards the translated call to the target GUI system (step 330). The translation software then optionally passes the command to the native GUI display driver (step 335). Again, this optional step is only performed if local display of the natively-executing application program is desired. By repeating processing steps 305-345, the present invention allows the application program to be executed in its native environment while simultaneously allowing the application to be interacted with remotely on a remote terminal or work station. Having described the processing steps of a preferred embodiment of the present invention, the preferred embodiment will now be explained by way of example.

FIG. 4 illustrates the processing steps of an application program. This program is designed to, in conjunction with an operating system, create a window which displays the text "Hello." The program's processing begins by registering a window class with its intended native operating system (step 405). This window class describes a series of global attributes (e.g., an icon for the window that appears when the window is minimized, the background color for the window, etc.) for a class of windows. Once a class of windows has been registered with the operating system, the program creates a window for the class using a CreateWindow API call (step 410). The CreateWindow API call creates the desired window internally in the memory of the computer system. To display the window on the video display, the program issues a ShowWindow API call (step 420). A processing loop, collectively represented by blocks 430, 435, 440 and 450, then requests the painting of the text "Hello" on the video display. The message loop 430 refers to the code that retrieves messages from a message queue provided by the native operating system. More specifically, when the program receives a paint message (step 435, YES PATHWAY), the program requests the rendering of the character string "Hello" in the center of the displayed window (step 440). On the other hand, when the received message is not a paint message (step 435, NO PATHWAY), the program determines whether or not the received message is a quit message (step 450). When the received message is not a quit message (step 450, NO PATHWAY), the program loops back to step 430 and waits for the next message. When the program receives a quit message (step 450, YES PATHWAY), the program exits.

FIG. 5 illustrates a flow diagram of the processing steps for the interaction between the application program of FIG. 4 and a native operating system. The native operating system responds to the registering of the new window class by storing class data for the new data class (step 510). By storing this data, a window, or a number of windows, can be created based on the stored class data. Next, the native operating system responds to the CreateWindow API call by creating a window structure (step 520). More specifically, the native operating system creates a window structure based on the passed parameters of the CreateWindow API call (e.g., the window style, the window caption, initial positioning, etc.) and returns to the application program a handle to the created window structure. After the window structure is created, the native operating system displays the window on the computer system's video display in response to the ShowWindow API call (step 530). In brief, the native operating system accomplishes this by receiving, as an input parameter from the application program, the handle that identifies the window that the application program desires to display. The native operating system also receives an input command which indicates whether the window should be displayed in normal or minimized format. After the native operating system displays the window, the application program begins inputting messages from the message queue via the previously described processing loop (steps 410-450 of FIG. 4). The native operating system provides a Default Window Procedure (step 540 of FIG. 5) that handles all the messages that the application program itself does not process (i.e., all messages other than paint and quit messages). As previously described, when the application program receives a paint message, the application program issues a draw "Hello" command to the native operating system. The native operating system responds to this command by calling the video display driver (step 550). In turn, the video display driver renders the text to the video display (step 560). In the above-described manner, the native operating system interacts with the application program to display a local window.

FIG. 6 illustrates a flow diagram of the processing steps for an example according to a preferred embodiment of the present invention. This example illustrates how a preferred embodiment provides for remote interaction, in a non-native environment, with a natively executing application. As can be observed from the flow diagram, the preferred embodiment allows system calls that are not window management related (e.g., registering the window class) to be passed directly to the native operating system. However, when an API call is window management related (e.g., creating windows, showing windows), the translation software intercepts the API call before passing the call to the native operating system (steps 610 and 620). For example, in the case of the API call CreateWindow, the preferred embodiment first calls either XGetGeometry or XGetWindow attributes to determine the dimensions of the remote server display. Once the dimensions of the remote server display are known, the translation software calls the Xlib function XCreateWindow to create a remotely displayed window in an X-Environment. Similarly, when the application program issues a ShowWindow API call, the translation software displays a respective X-Window (step 620) prior to passing the ShowWindow API call to the native operating system. Thus, in the example of FIG. 6, steps 610 and 620 represent the high-level intercept discussed with relation to step 315 of FIG. 3. Analogously, steps 630 and 640 of FIG. 6 represent the low-level intercepts discussed with reference to step 345 of FIG. 3. More specifically, the translation software intercepts the application program's call to the video display driver (step 630). As mentioned above, the video display driver does not deal with high-level constructs such as windows. As a result, the translation software must first determine the respective X-Window for which the call to the video display driver was made. This determination can be accomplished in a number of ways. For example, this determination can be made by maintaining and evaluating data structure that contains internal window state information for all the X-Windows that are currently in existence. In this scenario, the translation software determines the screen coordinates that are referenced by the display driver call. The translation software can then cross-reference these coordinates to obtain a handle for the window structure that owns the coordinates. In turn, this handle can then be cross-referenced to determine the respective X-Window. Having determined the desired X-Window, the translation software translates the rendering request into X-Calls and sends these calls to the remote X-Server. In this manner, the remote display is quickly and efficiently updated. Finally, the translation software optionally passes the video display driver call to the local video driver if desired. This step is only necessary if local rendering is desired.

As explained in this preferred embodiment, the present invention allows application programs that are executed under the "WINDOWS/NT" operating system to be interacted with remotely via the X-Client/Server window system. One particularly advantageous use of the preferred embodiment relates to the field of medical technology. More specifically, a preferred embodiment of the present invention is in the Multi-Disclosure Review Station manufactured by SpaceLabs, Incorporated utilizes a medical monitor as an X-Server. This specialized X-Server then renders the patient's critical data (e.g., a heart wave-form) on an accompanying X-Terminal. With the advent of the present invention, not only can the physician view a patient's heart wave-form on this terminal, but the physician can also access application programs written for the "WINDOWS/NT" operating system. As a result, the physician's work is greatly simplified. For example, an application such as "MICROSOFT EXCEL" can be used to maintain a database of the patient's medical history. Thus, the present invention allows the physician to retrieve the patient's up-to-date medical history while simultaneously viewing the patient's heart wave-form. As the present invention provides simultaneous access to current and past medical conditions, the physician can quickly and easily obtain all the information that is necessary to treat the patient via a single terminal. In this manner, the physician can work more efficiently.

The detailed discussion provided above illustrates preferred embodiments of the present invention. This discussion will enable those skilled in the art to make various modifications to this embodiment that do not depart from the spirit and the scope of the invention. For example, while a preferred embodiment was described with reference to the "WINDOWS/NT" operating system, those skilled in the art will realize that the inventive concepts disclosed within are not limited to any particular operating system. Similarly, while the preferred embodiment was described with reference to the X-Protocol, those skilled in the art will appreciate that the inventive concepts disclosed herein are not limited to the protocol of any particular remote graphical user interface. Accordingly, the present invention contemplates all such modifications that read upon the appended claims and equivalents thereof.

Goodrich, Donald W., Katz, Alan R., London, Mitchell B., Zeck, Steven

Patent Priority Assignee Title
10359922, Feb 06 2004 Time Warner Cable Inc. Methods and apparatus for display element management in an information network
10565026, Jul 29 2015 Microsoft Technology Licensing, LLC Containing an application in an immersive non-windowed environment
10609170, Dec 18 2000 ACK Ventures Holdings, LLC Delivering customized content to mobile devices
10684871, Jun 03 2018 Apple Inc Multi-process model for cross-platform applications
10735557, Jan 08 2016 ELO TOUCH SOLUTIONS, INC Device controller and viewer
10901761, Jun 03 2018 Apple Inc Multi-process model for cross-platform applications
10983811, Jun 03 2018 Apple Inc Multi-process model for cross-platform applications
11252055, Nov 24 2003 Time Warner Cable Enterprises LLC Methods and apparatus for hardware registration in a network device
11283902, Jan 08 2016 Elo Touch Solutions, Inc. Device controller and viewer
11287962, Feb 06 2004 WELLS FARGO TRUST COMPANY, N A Methods and apparatus for display element management in an information network
11645060, Jan 08 2016 Elo Touch Solutions, Inc. Device controller and viewer
11703991, Dec 06 2021 LG Electronics Inc. Display device with mouse control and operating method thereof
11818676, Oct 23 2019 Charter Communications Operating, LLC Methods and apparatus for device registration in a quasi-licensed wireless system
11829787, Jun 03 2018 Apple Inc. Multi-process model for cross-platform applications
11832034, Apr 16 2018 Charter Communications Operating, LLC Apparatus and methods for coordinated delivery of multiple data channels over physical medium
11889492, Feb 27 2019 Charter Communications Operating, LLC Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
11903049, Oct 12 2018 Charter Communications Operating, LLC Apparatus and methods for cell identification in wireless networks
6348933, Jul 20 1998 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Single logical screen display using multiple remote computer systems
6429402, Jan 24 1997 Los Alamos National Security, LLC Controlled laser production of elongated articles from particulates
6438619, Feb 13 1995 Gage Brook L.L.C. Operating system based remote communication system
6473100, May 20 1998 Microsoft Technology Licensing, LLC Hosting controls in a window via an interface for controlling the window
6484309, Oct 08 1998 Micron Technology, Inc Enabling software designed for one operating system to operate on another operating system
6522343, Jul 15 1998 ZHIGU HOLDINGS LIMITED Hosting objects in a windowed environment
6801224, Sep 14 2000 International Business Machines Corporation Method, system, and program for generating a graphical user interface window for an application program
6829654, Jun 23 2000 LOOKINGGLASS CYBER SOLUTIONS, INC Apparatus and method for virtual edge placement of web sites
6961945, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for adapting and hosting legacy user interface controls
6968370, Jan 17 2001 OL SECURITY LIMITED LIABILITY COMPANY Method of transferring resources between different operation systems
7051288, Feb 15 2001 TWITTER, INC Method, system, and product for a java-based desktop to provide window manager services on UNIX
7093267, May 20 1998 Microsoft Technology Licensing, LLC Hosting controls in a window via an interface for controlling the window
7340682, Sep 21 1999 Ostendo Technologies, Inc Method and system for controlling a complementary user interface on a display surface
7401158, Sep 16 2002 Oracle International Corporation Apparatus and method for instant messaging collaboration
7412481, Sep 16 2002 Oracle International Corporation Method and apparatus for distributed rule evaluation in a near real-time business intelligence system
7426059, Sep 16 2002 Oracle International Corporation Data presentation methods and apparatus to facilitate printing and reviewing
7437482, Jun 23 2000 LOOKINGGLASS CYBER SOLUTIONS, INC Method and apparatus for facilitating client server communications over a network
7454423, Sep 06 2002 Oracle International Corporation Enterprise link for a software database
7487511, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for providing and integrating high-performance message queues in a interface environment
7506345, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for adapting and hosting legacy user interface controls
7623933, Jun 10 2005 Time Warner Cable Enterprises LLC Methods and apparatus for controlling display in a networked device
7631316, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for providing and integrating high-performance message queues in a user interface environment
7668917, Sep 16 2002 Oracle International Corporation Method and apparatus for ensuring accountability in the examination of a set of data elements by a user
7680762, Jun 28 2001 Microsoft Technology Licensing, LLC System and method providing inlined stub
7716680, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for providing and integrating high-performance message queues in a user interface environment
7720672, Dec 29 1995 DELL MARKETING CORPORATION Method and apparatus for display of windowing application programs on a terminal
7730496, May 20 1998 Microsoft Technology Licensing, LLC Hosting controls in a window via an interface for controlling the window
7877155, Jun 10 2005 Time Warner Cable Enterprises LLC Methods and apparatus for controlling display in a networked device
7899879, Sep 06 2002 Oracle International Corporation Method and apparatus for a report cache in a near real-time business intelligence system
7904823, Mar 17 2003 Oracle International Corporation Transparent windows methods and apparatus therefor
7912899, Sep 06 2002 Oracle International Corporation Method for selectively sending a notification to an instant messaging device
7917856, Oct 24 2005 SAP SE Converting between user interface technologies
7941542, Sep 06 2002 Oracle International Corporation Methods and apparatus for maintaining application execution over an intermittent network connection
7945846, Sep 06 2002 Oracle International Corporation Application-specific personalization for data display
8001185, Sep 06 2002 Oracle International Corporation Method and apparatus for distributed rule evaluation in a near real-time business intelligence system
8046682, Dec 02 2002 Oracle America, Inc Method and system for accessing business applications via a standard interface
8079021, Dec 29 1995 DELL MARKETING CORPORATION Method and apparatus for display of windowing application programs on a terminal
8132191, Oct 30 2000 Microsoft Technology Licensing, LLC Method and apparatus for adapting and hosting legacy user interface controls
8165993, Sep 06 2002 Oracle International Corporation Business intelligence system with interface that provides for immediate user action
8255454, Sep 06 2002 Oracle International Corporation Method and apparatus for a multiplexed active data window in a near real-time business intelligence system
8402095, Sep 16 2002 Oracle International Corporation Apparatus and method for instant messaging collaboration
8433812, Apr 01 2008 Microsoft Technology Licensing, LLC Systems and methods for managing multimedia operations in remote sessions
8555194, Jul 17 1998 Ostendo Technologies, Inc Secondary user interface
8566693, Sep 06 2002 Oracle International Corporation Application-specific personalization for data display
8577989, Sep 06 2002 Oracle International Corporation Method and apparatus for a report cache in a near real-time business intelligence system
8725645, Jan 04 2013 Cetrus LLC Non-invasive metering system for software licenses
8763054, Nov 02 2012 RPX Corporation Cross-platform video display
8763055, Nov 02 2012 RPX Corporation Cross-platform video display
8769110, May 27 2011 Saturn Licensing LLC Transferring RUI from one device to another
8775545, Dec 30 2011 RPX Corporation Image hosting for cross-platform display over a communication network
8776152, Nov 02 2012 RPX Corporation Cloud-based cross-platform video display
8856262, Dec 30 2011 RPX Corporation Cloud-based image hosting
8904362, Dec 29 1995 DELL MARKETING CORPORATION Method and apparatus for display of windowing application programs on a terminal
8922569, Dec 30 2011 RPX Corporation Cloud based system for and method of translating between disparate 3D graphics languages in client-server computing environments
8938724, Dec 18 2000 ACK Ventures Holdings, LLC Delivering customized content to mobile devices
8990363, May 18 2012 RPX Corporation Decomposition and recomposition for cross-platform display
9064292, Dec 30 2011 RPX Corporation System for and method of classifying and translating graphics commands in client-server computing systems
9094258, Sep 06 2002 Oracle International Corporation Method and apparatus for a multiplexed active data window in a near real-time business intelligence system
9106612, May 18 2012 RPX Corporation Decomposition and recomposition for cross-platform display
9124562, May 18 2012 RPX Corporation Cloud-based decomposition and recomposition for cross-platform display
9165160, Feb 04 2011 RPX Corporation System for and methods of controlling user access and/or visibility to directories and files of a computer
9183663, Dec 30 2011 RPX Corporation System for and method of classifying and translating graphics commands in client-server computing systems
9185171, Apr 15 2009 DELL MARKETING CORPORATION Method and system of specifying application user interface of a remote client device
9213538, Feb 06 2004 Time Warner Cable Enterprises LLC Methods and apparatus for display element management in an information network
9218107, Dec 30 2011 RPX Corporation Cloud-based text management for cross-platform display
9223534, Dec 30 2011 RPX Corporation Client side detection of motion vectors for cross-platform display
9239812, Aug 08 2012 RPX Corporation System for and method of providing a universal I/O command translation framework in an application publishing environment
9250782, Mar 15 2013 RPX Corporation Using split windows for cross-platform document views
9292157, Mar 15 2013 RPX Corporation Cloud-based usage of split windows for cross-platform document views
9367931, Dec 30 2011 RPX Corporation Motion vectors for cross-platform display
9384014, Jun 28 2011 LG Electronics Inc. Mobile terminal and display controlling method therein
9398001, May 25 2012 RPX Corporation System for and method of providing single sign-on (SSO) capability in an application publishing environment
9401909, May 25 2012 RPX Corporation System for and method of providing single sign-on (SSO) capability in an application publishing environment
9419848, May 25 2012 SALESFORCE COM, INC System for and method of providing a document sharing service in combination with remote access to document applications
9430134, Mar 15 2013 RPX Corporation Using split windows for cross-platform document views
9454617, Dec 30 2011 RPX Corporation Client rendering
9465955, Feb 04 2011 RPX Corporation System for and methods of controlling user access to applications and/or programs of a computer
9479404, Nov 24 2003 Time Warner Cable Enterprises LLC Methods and apparatus for hardware registration in a network device
9674287, Nov 24 2003 Time Warner Cable Enterprises LLC Methods and apparatus for event logging in an information network
Patent Priority Assignee Title
5327529, Sep 24 1990 ACCESS CO , LTD Process of designing user's interfaces for application programs
5361344, Jan 29 1993 Unisys Corporation Method of operating, via a block mode terminal, UNIX programs for a character mode terminal
5375068, Jun 03 1992 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Video teleconferencing for networked workstations
5412772, Oct 13 1992 RPX Corporation System for permitting a view of an object or a user interface to be exchanged between operating system environments
5450600, Nov 08 1991 Mitsubishi Denki Kabushiki Kaisha Integrated command recognition apparatus and method for selecting an optimal command among numerous commands
5461716, May 22 1990 International Business Machines Corporation Method and apparatus for assisting in the presentation and removal of windows
5475421, Jun 03 1992 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Video data scaling for video teleconferencing workstations communicating by digital data network
5498003, Oct 07 1993 Interactive electronic games and screen savers with multiple characters
5546324, Jun 03 1992 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Video teleconferencing for networked workstations
5581758, Oct 05 1992 International Business Machines Corporation Computer program product for object specification, generation, and management in a distributed database
5627979, Jul 18 1994 International Business Machines Corporation System and method for providing a graphical user interface for mapping and accessing objects in data stores
5634019, Apr 15 1994 Microsoft Technology Licensing, LLC Method and system for in-place interaction with contained objects
////////
Executed onAssignorAssigneeConveyanceFrameReelDoc
Jun 06 1995Exodus Technologies, Inc.(assignment on the face of the patent)
Jun 06 1995LONDON, MITCHELL B SPACELABS, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0075860509 pdf
Jun 06 1995KATZ, ALAN R SPACELABS, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0075860509 pdf
Jun 06 1995GOODRICH, DONALD W SPACELABS, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0075860509 pdf
Jun 06 1995ZECK, STEVENSPACELABS, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0075860509 pdf
May 11 1999AMERICAN UNITED GLOBAL, INC GRAPHON CORPORATION, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0242520768 pdf
Mar 31 2021HOPTO, INC RPX CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0557950700 pdf
Apr 05 2021RPX CorporationBARINGS FINANCE LLC, AS COLLATERAL AGENTPATENT SECURITY AGREEMENT0562410453 pdf
Date Maintenance Fee Events
May 21 2002REM: Maintenance Fee Reminder Mailed.
Nov 01 2002M2554: Surcharge for late Payment, Small Entity.
Nov 01 2002M2551: Payment of Maintenance Fee, 4th Yr, Small Entity.
Dec 02 2002R1554: Refund - Surcharge for Late Payment, Large Entity.
Dec 02 2002R1551: Refund - Payment of Maintenance Fee, 4th Year, Large Entity.
Dec 02 2002ASPN: Payor Number Assigned.
Dec 02 2002LTOS: Pat Holder Claims Small Entity Status.
May 03 2006M2552: Payment of Maintenance Fee, 8th Yr, Small Entity.
Jun 07 2010REM: Maintenance Fee Reminder Mailed.
Nov 03 2010M2556: 11.5 yr surcharge- late pmt w/in 6 mo, Small Entity.
Nov 03 2010M2553: Payment of Maintenance Fee, 12th Yr, Small Entity.


Date Maintenance Schedule
Nov 03 20014 years fee payment window open
May 03 20026 months grace period start (w surcharge)
Nov 03 2002patent expiry (for year 4)
Nov 03 20042 years to revive unintentionally abandoned end. (for year 4)
Nov 03 20058 years fee payment window open
May 03 20066 months grace period start (w surcharge)
Nov 03 2006patent expiry (for year 8)
Nov 03 20082 years to revive unintentionally abandoned end. (for year 8)
Nov 03 200912 years fee payment window open
May 03 20106 months grace period start (w surcharge)
Nov 03 2010patent expiry (for year 12)
Nov 03 20122 years to revive unintentionally abandoned end. (for year 12)