IP Library Granted Patent US 9,208,004
Granted Patent B2
US 9,208,004 · App. 14/297,506 · Granted Dec 8, 2015

Method of hosting a first application in a second application

Inventors: Ozcan Degirmenci (Istanbul, TR); Mark Jeremy Zeller (Seattle, WA); Stefan I. Larimore (Redmond, WA)
Assignee: CODE SYSTEMS CORPORATION
G06F9/546G06F9/542G06F2209/545
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,208,004
App. No.
14/297,506
Granted
Dec 8, 2015
Kind
B2
Abstract

A method of hosting a first application (e.g., a virtual application) inside a second application (e.g., a control displayed by a web browser). The method includes executing the first application inside a runtime environment generated at least in part by a runtime engine. The executing first application calls user interface functions that when executed inside the runtime environment generate a first user interface. The runtime engine captures these calls, generates messages comprising information associated with the captured calls, and forwards the messages to a user interface manager that is a separate application from the runtime engine. The user interface manager receives the messages, translates the information associated with the captured calls into instructions for the second application, and sends the instructions to the second application. The control receives the instructions sent by the user interface manager, and displays a second user interface for the first application based on the instructions.

Claims (45)

1. A computer executable method for use with a virtual application, a client application, and a host operating system executing on at least one computing device, the method comprising:

executing, by the host operating system, a virtual runtime engine configured to generate a first user interface;

executing, by the host operating system, the client application which displays a second user interface;

executing the virtual application within a virtual runtime environment implemented by the virtual runtime engine, the virtual application being encapsulated from the host operating system by the virtual runtime environment;

receiving, by the virtual runtime engine, a user interface message generated by the virtual application, the user interface message comprising instructions configured to modify the first user interface generated by the virtual runtime engine;

instead of modifying the first user interface, generating, by the virtual runtime engine, at least one user interface command for the second user interface displayed by the client application, the at least one user interface command being generated based on the user interface message; and

sending, by the virtual runtime engine, the at least one user interface command to the client application, the at least one user interface command being configured to cause the client application to modify the second user interface.

2. The method of claim 1 , further comprising:

downloading the virtual application from a server over the Internet.

3. The method of claim 1 , further comprising

after virtual runtime engine receives the user interface message, identifying one or more of a plurality of listeners configured to generate a user interface command for the user interface message, each of the plurality of listeners comprising at least one condition and at least one action; and

for each listener identified, determining whether the at least one condition is satisfied, and if the at least one condition is satisfied, performing the at least one action of the listener, the at least one action generating one or more user interface commands.

4. The method of claim 3 , further comprising:

loading at least one configuration file comprising configuration information for the plurality of listeners; and

configuring the plurality of listeners based on the configuration information.

5. The method of claim 1 , further comprising:

receiving a handle to the second user interface; and

using the handle to send the at least one user interface command to the client application.

6. A computer executable method performed by a virtual runtime engine configured to provide at least a portion of a virtual runtime environment, the method comprising:

executing virtual runtime engine on a host on a operating system executing on at least one computing device;

executing an application inside the virtual, runtime environment provided at least in part by the virtual runtime engine, the application being encapsulated from the host operating system by the virtual runtime environment, the application being configured to instruct the virtual runtime environment to generate a first user interface when executing;

capturing user interface messages generated by the executing application, the user interface messages including instructions to the virtual runtime environment to modify the first user interface;

sending at least a portion of the captured user interface messages to an external process configured to generate a second user interface different from the first user interface, both the external process and the second user interface executing outside the portion of the virtual runtime environment provided by the virtual runtime engine;

receiving one or more application programming messages from the external process in response to having sent the portion of the captured user interface messages to the external process; and

calling inside the virtual runtime environment one or more application programming interfaces associated with a first portion of the one or more application programming messages.

7. The method of claim 6 , wherein the one or more application programming messages are received over a named-pipe connection between the virtual runtime engine and the external process.

8. The method of claim 6 , wherein the external process is a user interface manager of a virtual process manager configured to download the application from a server over the Internet and initiate execution of the application.

9. The method of claim 8 , wherein the virtual process manager is configured to render the second user interface in a control displayed by a webpage displayed by a web browser.

10. The method of claim 9 , wherein the control of the second user interface comprises contents of one or more windows.

11. The method of claim 6 , wherein the first portion of the one or more application programming messages comprises fewer than all of the one or more application programming messages, and the method further comprises:

sending at least one user interface message to the external process for each application programming message not in the first portion of the one or more application programming messages.

12. The method of claim 6 , further comprising:

comparing the captured user interface messages to a list of user interface messages, the portion of the captured user interface messages sent to the external process comprising ones of the captured user interface messages on the list of user interface messages to send to the external process.

13. The method of claim 6 , wherein the application comprises one or more threads, and the method further comprises:

setting up a hook procedure for each of the one or more threads, each hook procedure being executable by a hook configured to monitor the thread for user interface messages, the hook triggering the execution of the hook procedure whenever the hook detects a user interface message, when executed, the hook procedure providing an indication that a user interface message has been generated.

14. A computer executable method comprising:

executing a virtual runtime engine on a host operating system executing on at least one computing device;

executing an application inside a virtual runtime environment generated at least in part by the virtual runtime engine, the application being encapsulated from the host operating system by the virtual runtime environment, the application calling user interface functions that when executed inside the virtual runtime environment cause the virtual runtime engine to generate a first user interface, the virtual runtime engine capturing the calls to the user interface functions, generating messages comprising information associated with the captured calls, and forwarding the messages to a user interface manager, the user interface manager being a separate application from the virtual runtime engine;

receiving at the user interface manager, the messages comprising the information associated with the captured calls, the user interface manager translating the information associated with the captured calls into instructions for a control displayed by a web browser, and sending the instructions to the control; and

receiving at the control, the instructions sent by the user interface manager, the control displaying a second user interface for the application based on the instructions.

15. The method of claim 14 , further comprising:

at the user interface manager, generating a call to an application programming interface, generating an application programming message comprising information associated with the call to the application programming interface, and sending the application programming message to the virtual runtime engine; and

at the virtual runtime engine, receiving the application programming message, and calling the application programming interface associated with the information in the application programming message.

16. The method of claim 14 , further comprising:

downloading the application from a server over the Internet.

Assignments (3)
ADDRESS CHANGE Recorded Nov 10, 2015
From: CODE SYSTEMS CORPORATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 037084/0283 →
CHANGE OF ADDRESS Recorded May 28, 2015
From: CODE SYSTEMS CORPORTATION
To: CODE SYSTEMS CORPORATION
Reel/Frame 035794/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2014
From: DEGIRMENCI, OZCAN; ZELLER, MARK JEREMY; LARIMORE, STEFAN I.
To: CODE SYSTEMS CORPORATION
Reel/Frame 033043/0268 →
Continuity (4)
Continuation 13088265 · Apr 15, 2011
Provisional Application 61325315 · Apr 17, 2010
Provisional Application 61325798 · Apr 19, 2010
Related Publication 20140289743A1 · Sep 25, 2014