Software robots for programmatically controlling computer programs to perform tasks
First Claim
1. A system for remotely controlling multiple application programs executing on multiple respective virtual machines to perform a task, the system comprising:
- a computing device, comprising a first processor, and configured to execute;
a first virtual machine configured to execute a first application program; and
a second virtual machine configured to execute a second application program; and
a controller communicatively coupled to the computing device and comprising a second processor, the controller configured to perform;
generating, based on first information obtained from the first virtual machine and second information obtained from the second virtual machine, a global object hierarchy comprising;
a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program executing on the first virtual machine, wherein the first plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a first graphical user interface through which user input for controlling the first application program can be provided, anda second plurality of objects corresponding to a second plurality of active GUI elements of the second application program executing on the second virtual machine, wherein the second plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a second graphical user interface through which user input for controlling the second application program can be provided;
controlling the first application program to perform a first sub-task of the task using the global object hierarchy at least in part by;
using a first object of the first plurality of objects to cause, via a first active GUI element of the first plurality of active GUI elements, the first application program to at least partially perform a first action in furtherance of the first sub-task, the first action programmatically emulating a user'"'"'s interaction with the first active GUI element, wherein programmatically emulating the user'"'"'s interaction with the first active GUI element comprises invoking one or more functions of the first application program or an operating system managing execution of the first application program to cause the first application program to perform the first action using the first active GUI element; and
controlling the second application program to perform a second sub-task of the task using the global object hierarchy at least in part by;
using a second object of the second plurality of objects to cause, via a second active GUI element of the second plurality of active GUI elements, the second application program to at least partially perform a second action in furtherance of the second sub-task, the second action programmatically emulating the user'"'"'s interaction with the second active GUI element, wherein programmatically emulating the user'"'"'s interaction with the second active GUI element comprises invoking one or more functions of the second application program or an operating system managing execution of the second application program to cause the second application program to perform the second action using the second active GUI element.
6 Assignments
0 Petitions
Accused Products
Abstract
A system for remotely controlling multiple application programs executing on multiple respective physical computing devices, the system comprising a first computing device, comprising a first processor, and configured to execute a first application program; a second computing device, comprising a second processor, and configured to execute a second application program; and a controller configured to perform: generating, based on first information obtained from the first computing device and second information obtained from the second computing device, a global object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of the first application program and the second application program; controlling the first application program to perform the first sub-task at least in part by using the global object hierarchy; and controlling the second application program to perform the second sub-task at least in part by using the global object hierarchy.
-
Citations
20 Claims
-
1. A system for remotely controlling multiple application programs executing on multiple respective virtual machines to perform a task, the system comprising:
-
a computing device, comprising a first processor, and configured to execute; a first virtual machine configured to execute a first application program; and a second virtual machine configured to execute a second application program; and a controller communicatively coupled to the computing device and comprising a second processor, the controller configured to perform; generating, based on first information obtained from the first virtual machine and second information obtained from the second virtual machine, a global object hierarchy comprising; a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program executing on the first virtual machine, wherein the first plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a first graphical user interface through which user input for controlling the first application program can be provided, and a second plurality of objects corresponding to a second plurality of active GUI elements of the second application program executing on the second virtual machine, wherein the second plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a second graphical user interface through which user input for controlling the second application program can be provided; controlling the first application program to perform a first sub-task of the task using the global object hierarchy at least in part by; using a first object of the first plurality of objects to cause, via a first active GUI element of the first plurality of active GUI elements, the first application program to at least partially perform a first action in furtherance of the first sub-task, the first action programmatically emulating a user'"'"'s interaction with the first active GUI element, wherein programmatically emulating the user'"'"'s interaction with the first active GUI element comprises invoking one or more functions of the first application program or an operating system managing execution of the first application program to cause the first application program to perform the first action using the first active GUI element; and controlling the second application program to perform a second sub-task of the task using the global object hierarchy at least in part by; using a second object of the second plurality of objects to cause, via a second active GUI element of the second plurality of active GUI elements, the second application program to at least partially perform a second action in furtherance of the second sub-task, the second action programmatically emulating the user'"'"'s interaction with the second active GUI element, wherein programmatically emulating the user'"'"'s interaction with the second active GUI element comprises invoking one or more functions of the second application program or an operating system managing execution of the second application program to cause the second application program to perform the second action using the second active GUI element.
-
-
2. The system of claim 1,
wherein the first information includes information generated using the first virtual machine about the first plurality of active GUI elements of the first application program; -
wherein the second information includes information generated using the second virtual machine about the second plurality of active GUI elements of the second application program; and wherein generating the global object hierarchy comprises combining a first local object hierarchy and a second local object hierarchy to obtain the global object hierarchy.
-
-
3. The system of claim 1, wherein controlling the first application program comprises:
accessing, in the global object hierarchy, the first object corresponding to the first active GUI element of the first application program.
-
4. The system of claim 3, wherein the first virtual machine maintains a local object hierarchy including a first local object corresponding to the first object in the global object hierarchy, and wherein using the first object comprises providing an indication to the first virtual machine to use the first local object to cause the first application program to at least partially perform the first action.
-
5. The system of claim 1, wherein the computing device is configured to execute a hypervisor to manage execution of the first virtual machine and the second virtual machine.
-
6. A system for remotely controlling one or more application programs executing on a respective one or more virtual machines, the system comprising:
a controller, comprising a first processor, configured to perform; accessing a computer program for controlling at least one application program to perform a task including a first sub-task to be performed by a first application program executing on a first virtual machine; identifying, using the computer program, a first action to perform in furtherance of the first sub-task; and providing an indication to at least one computing device executing the first virtual machine to control the first application program to at least partially perform the first action; and the at least one computing device, communicatively coupled to the controller, comprising a second processor configured to execute the first virtual machine and to perform; generating a first object hierarchy comprising a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program, wherein the first plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a first graphical interface through which user input for controlling the first application program can be provided; and in response to receiving the indication from the controller to at least partially perform the first action, using the first object hierarchy to cause the first application program to at least partially perform the first action at least in part by; using a first object of the first plurality of objects to cause, via a first active GUI element of the first plurality of active GUI elements, the first application program to at least partially perform the first action in furtherance of the first sub-task, the first action programmatically emulating a user'"'"'s interaction with the first active GUI element, wherein programmatically emulating the user'"'"'s interaction with the first active GUI element comprises invoking one or more functions of the first application program or an operating system managing execution of the first application program to cause the first application program to perform the first action using the first active GUI element.
-
7. The system of claim 6,
wherein the task further includes a second sub-task to be performed by a second application program executing on a second virtual machine; - and
wherein the controller is further configured to provide an indication to the second virtual machine to control the second application program to at least partially perform a second action in furtherance of the second sub-task.
- and
-
8. The system of claim 7, wherein the at least one computing device is configured to execute the second virtual machine and to perform:
-
generating a second object hierarchy comprising a second plurality of objects corresponding to a second plurality of active GUI elements of the second application program; and in response to receiving the indication from the controller to at least partially perform the second action, using the second object hierarchy to cause the second application program to at least partially perform the second action.
-
-
9. The system of claim 6, wherein using the first object hierarchy to cause the first application program to at least partially perform the first action comprises:
accessing in the first object hierarchy, the first object corresponding to the first active GUI element of the first application program.
-
10. The system of claim 8, wherein the at least one computing device is configured to execute a hypervisor to manage execution of the first virtual machine and the second virtual machine.
-
11. A system for remotely controlling multiple application programs executing on multiple respective physical computing devices to perform a task, the system comprising:
-
a first computing device, comprising a first processor, and configured to execute a first application program; a second computing device, comprising a second processor, and configured to execute a second application program; and a controller communicatively coupled to the first and second computing devices and comprising a third processor, the controller configured to perform; generating, based on first information obtained from the first computing device and second information obtained from the second computing device, a global object hierarchy comprising; a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program executing on the first computing device, wherein the first plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a first graphical user interface through which user input for controlling the first application program can be provided, and a second plurality of objects corresponding to a second plurality of active GUI elements of the second application program executing on the second computing device, wherein the second plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a second graphical user interface through which user input for controlling the second application program can be provided; controlling the first application program to perform a first sub-task of the task using the global object hierarchy at least in part by; using a first object of the first plurality of objects to cause, via a first active GUI element of the first plurality of active GUI elements, the first application program to at least partially perform a first action in furtherance of the first sub-task, the first action programmatically emulating a user'"'"'s interaction with the first active GUI element, wherein programmatically emulating the user'"'"'s interaction with the first active GUI element comprises invoking one or more functions of the first application program or an operating system managing execution of the first application program to cause the first application program to perform the first action using the first active GUI element; and controlling the second application program to perform a second sub-task of the task using the global object hierarchy at least in part by; using a second object of the second plurality of objects to cause, via a second active GUI element of the second plurality of active GUI elements, the second application program to at least partially perform a second action in furtherance of the second sub-task, the second action programmatically emulating the user'"'"'s interaction with the second active GUI element, wherein programmatically emulating the user'"'"'s interaction with the second active GUI element comprises invoking one or more functions of the second application program or an operating system managing execution of the second application program to cause the second application program to perform the second action using the second active GUI element.
-
-
12. The system of claim 11,
wherein the first information includes information generated on the first computing device about the first plurality of active GUI elements of the first application program; -
wherein the second information includes information generated on the second computing device about the second plurality of active GUI elements of the second application program; and wherein generating the global object hierarchy comprises combining a first local object hierarchy and a local second object hierarchy to obtain the global object hierarchy.
-
-
13. The system of claim 11, wherein controlling the first application program comprises:
accessing, in the global object hierarchy, the first object corresponding to the first active GUI element of the first application program.
-
14. The system of claim 13, wherein the first computing device maintains a local object hierarchy including a first local object corresponding to the first object in the global object hierarchy, and wherein using the first object comprises providing an indication to the first computing device to use the first local object to cause the first application program to at least partially perform the first action.
-
15. The system of claim 13, wherein accessing the first object comprises refreshing the global object hierarchy.
-
16. A system for remotely controlling one or more application programs executing on a respective one or more physical computing devices, the system comprising:
-
a controller comprising a first processor and configured to perform; accessing a computer program for controlling at least one application program to perform a task including a first sub-task to be performed by a first application program executing on a first computing device external to the controller; identifying, using the computer program, a first action to perform in furtherance of the first sub-task; and providing an indication to the first computing device to control the first application program to at least partially perform the first action; and the first computing device, communicatively coupled to the controller and comprising a second processor, configured to execute the first application program and to perform; generating a first object hierarchy comprising a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program, wherein the first plurality of active GUI elements comprises at least one active GUI element contained within an outer container of a first graphical user interface through which user input for controlling the first application program can be provided; and in response to receiving the indication from the controller to at least partially perform the first action, using the first object hierarchy to cause the first application program to at least partially perform the first action at least in part by; using a first object of the first plurality of objects to cause, via a first active GUI element of the first active GUI elements, the first application program to at least partially perform the first action in furtherance of the first sub-task, the first action programmatically emulating a user'"'"'s interaction with the first active GUI element wherein programmatically emulating the user'"'"'s interaction with the first active GUI element comprises invoking one or more functions of the first application program or an operating system managing execution of the first application program to cause the first application program to perform the first action using the first active GUI element.
-
-
17. The system of claim 16,
wherein the task further includes a second sub-task to be performed by a second application program executing on a second computing device different from the first computing device; - and
wherein the controller is further configured to provide an indication to the second computing device to control the second application program to at least partially perform a second action in furtherance of the second sub-task.
- and
-
18. The system of claim 17, further comprising:
the second computing device, communicatively coupled to the controller, comprising a third processor configured to execute the second application program and to perform; generating a second object hierarchy comprising a second plurality of objects corresponding to a second plurality of active GUI elements of the second application program; and in response to receiving the indication from the controller to at least partially perform the second action, using the second object hierarchy to cause the second application program to at least partially perform the second action.
-
19. The system of claim 16, wherein using the first object hierarchy to cause the first application program to at least partially perform the first action comprises:
accessing in the first object hierarchy, the first object corresponding to the first active GUI element of the first application program.
-
20. The system of claim 19, wherein accessing the first object comprises refreshing the first object hierarchy.
Specification