IP Library Granted Patent US 10,754,493
Granted Patent B2
US 10,754,493 · App. 16/428,031 · Granted Aug 25, 2020

Software robots for programmatically controlling computer programs to perform tasks

Inventors: George Peter Nychis (Somerville, MA); Rohan Narayan Murty (Bangalore, IN)
Assignee: Soroco Private Limited
G06F3/0481G06F3/048G06F3/0482G06F3/0484G06F3/04842G06F8/38G06F9/44G06F9/4488G06F9/451G06F9/455G06F9/45508G06F9/45512G06F9/45533G06F9/45558G06F11/0706G06F11/0766G06F11/32G06F11/36G06F11/3612G06F11/3688G06F16/9535G06F11/3409G06F11/3438G06F11/3466G06F11/3476G06F2009/4557
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 10,754,493
App. No.
16/428,031
Granted
Aug 25, 2020
Kind
B2
Abstract

A system comprising at least one computer hardware processor configured to perform: generating an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of at least one application program; controlling the at least one application program to perform a task comprising a sequence of actions at least in part by using the object hierarchy to invoke actions in the sequence of actions.

Claims (66)

1. A system for controlling at least one application program for performing a task comprising a sequence of actions, the at least one application program including a first application program and a second application program, the first and second application programs implemented using different graphical user interface (GUI) technologies and configured to execute at least in part by using different GUI application libraries, the system comprising:

at least one computer hardware processor; and

at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform:

controlling the first application program and the second application program using an object hierarchy comprising a first portion of the object hierarchy for the first application program and a second portion of the object hierarchy for the second application program, wherein controlling the first application program and the second application program using an object hierarchy comprises:

controlling the first application program to perform a first action in the sequence of actions using the first portion of the object hierarchy, the first portion of the object hierarchy comprising a first plurality of objects corresponding to a first plurality of active GUI elements of the first application program, wherein controlling the first application program comprises:

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, the first action programmatically emulating a user's interaction with the first active GUI element; and

after the first application program performs the first action, refreshing the object hierarchy to obtain a first refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of active GUI elements reflecting changes in a user interface of the first application program; and

controlling the second application program to perform a second action in the sequence of actions using the second portion of the object hierarchy, the second portion of the object hierarchy comprising a third plurality of objects corresponding to a third plurality of active GUI elements of the second application program, wherein controlling the second application program comprises:

using a third object of the third plurality of objects to cause, via a third active GUI element of the third plurality of active GUI elements, the second application program to at least partially perform the second action, the second action programmatically emulating a user's interaction with the third active GUI element; and

after the second application program performs the second action, refreshing the object hierarchy to obtain a second refreshed object hierarchy comprising a fourth plurality of objects corresponding to a fourth plurality of active GUI elements reflecting changes in a user interface of the second application program.

2. The system of claim 1 , wherein refreshing the object hierarchy comprises:

refreshing at least one object in the object hierarchy, adding at least one object to the object hierarchy, and/or removing at least one object from the object hierarchy.

3. The system of claim 1 , wherein refreshing the object hierarchy comprises:

refreshing only a subset of objects in the object hierarchy.

4. The system of claim 1 , wherein controlling the first application program to perform the first action in the sequence of actions comprises:

accessing the first object in the object hierarchy corresponding to the first active GUI element of the first application program.

5. The system of claim 1 , wherein refreshing the object hierarchy comprises:

refreshing only one or more parent objects of the first object in the object hierarchy, one or more descendant objects of the first object in the object hierarchy, and/or the first object.

6. The system of claim 1 , wherein refreshing the object hierarchy comprises:

adding a new object to the object hierarchy, wherein the new object is associated with an active GUI element of the first application program.

7. The system of claim 1 , wherein the first active GUI element of the first application program is a visible GUI element of the first application program.

8. The system of claim 1 , further comprising a display, wherein the processor-executable instructions further cause the at least one computer hardware processor to perform:

displaying the user interface of the first application program on the display during the performance of at least some of the sequence of actions.

9. The system of claim 1 , further comprising:

generating the object hierarchy comprising a plurality of objects corresponding to active GUI elements of the at least one application program, the generating comprising:

identifying the first plurality of active GUI elements of the first application program and the third plurality of active GUI elements of the second application program; and

generating the first portion of the object hierarchy comprising the first plurality of objects and the second portion of the object hierarchy comprising the third plurality of objects.

10. The system of claim 9 , wherein generating the object hierarchy comprises:

obtaining a first hierarchical representation of the first plurality of active GUI elements of the first application program from an operating system; and

identifying the first plurality of active GUI elements of the first application program using the first hierarchical representation.

11. The system of claim 10 , wherein obtaining the first hierarchical representation is performed by using the WINDOWS Automation API.

12. The system of claim 1 , wherein the processor-executable instructions, when executed by the at least one computer hardware processor, further cause the at least one computer hardware processor to perform:

controlling the first application program to perform a third action in the sequence of actions using the first refreshed 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 first application program to at least partially perform the third action, the third action programmatically emulating a user's interaction with the second active GUI element.

13. The system of claim 12 , wherein the processor-executable instructions, when executed by the at least one computer hardware processor, further cause the at least one computer hardware processor to perform:

controlling the second application program to perform a fourth action in the sequence of actions using the second refreshed object hierarchy at least in part by:

using a fourth object of the fourth plurality of objects to cause, via a fourth active GUI element of the fourth plurality of active GUI elements, the second application program to at least partially perform the fourth action, the fourth action programmatically emulating a user's interaction with the fourth active GUI element.

14. A method for controlling at least one application program for performing a task comprising a sequence of actions, the at least one application program including a first application program and a second application program, the first and second application programs implemented using different graphical user interface (GUI) technologies and configured to execute at least in part by using different GUI application libraries, the method comprising:

using at least one computer hardware processor to perform:

controlling the first application program and the second application program using an object hierarchy comprising a first portion of the object hierarchy for the first application program and a second portion of the object hierarchy for the second application program, wherein controlling the first application program and the second application program using an object hierarchy comprises:

controlling the first application program to perform a first action in the sequence of actions using the first portion of the object hierarchy, the first portion of the object hierarchy comprising a first plurality of objects corresponding to a first plurality of active GUI elements of the first application program, wherein controlling the first application program comprises:

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, the first action programmatically emulating a user's interaction with the first active GUI element; and

after the first application program performs the first action, refreshing the object hierarchy to obtain a first refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of active GUI elements reflecting changes in a user interface of the first application program; and

controlling the second application program to perform a second action in the sequence of actions using the second portion of the object hierarchy, the second portion of the object hierarchy comprising a third plurality of objects corresponding to a third plurality of active GUI elements of the second application program, wherein controlling the second application program comprises:

using a third object of the third plurality of objects to cause, via a third active GUI element of the third plurality of active GUI elements, the second application program to at least partially perform the second action, the second action programmatically emulating a user's interaction with the third active GUI element; and

after the second application program performs the second action, refreshing the object hierarchy to obtain a second refreshed object hierarchy comprising a fourth plurality of objects corresponding to a fourth plurality of active GUI elements reflecting changes in a user interface of the second application program.

15. The method of claim 14 , wherein refreshing the object hierarchy comprises:

refreshing at least one object in the object hierarchy, adding at least one object to the object hierarchy, and/or removing at least one object from the object hierarchy.

16. The method of claim 14 , wherein refreshing the object hierarchy comprises:

refreshing only a subset of objects in the object hierarchy.

17. The method of claim 14 , wherein controlling the first application program to perform the first action in the sequence of actions comprises:

accessing the first object in the object hierarchy corresponding to the first active GUI element of the first application program.

18. The method of claim 14 , wherein refreshing the object hierarchy comprises:

refreshing only one or more parent objects of the first object in the object hierarchy, one or more descendant objects of the first object in the object hierarchy, and/or the first object.

19. The method of claim 14 , further comprising:

generating the object hierarchy comprising a plurality of objects corresponding to active GUI elements of the at least one application program, the generating comprising:

identifying the first plurality of active GUI elements of the first application program and the third plurality of active GUI elements of the second application program; and

generating the first portion of the object hierarchy comprising the first plurality of objects and the second portion of the object hierarchy comprising the third plurality of objects.

20. At least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by at least one computer hardware processor, causes the at least one computer hardware processor to perform a method for controlling at least one application program for performing a task comprising a sequence of actions, the at least one application program including a first application program and a second application program, the first and second application programs implemented using different graphical user interface (GUI) technologies and configured to execute at least in part by using different GUI application libraries, the method comprising:

controlling the first application program and the second application program using an object hierarchy comprising a first portion of the object hierarchy for the first application program and a second portion of the object hierarchy for the second application program, wherein controlling the first application program and the second application program using an object hierarchy comprises:

controlling the first application program to perform a first action in the sequence of actions using the first portion of the object hierarchy, the first portion of the object hierarchy comprising a first plurality of objects corresponding to a first plurality of active GUI elements of the first application program, wherein controlling the first application program comprises:

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, the first action programmatically emulating a user's interaction with the first active GUI element; and

after the first application program performs the first action, refreshing the object hierarchy to obtain a first refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of active GUI elements reflecting changes in a user interface of the first application program;

controlling the second application program to perform a second action in the sequence of actions using the second portion of the object hierarchy, the second portion of the object hierarchy comprising a third plurality of objects corresponding to a third plurality of active GUI elements of the second application program, wherein controlling the second application program comprises:

using a third object of the third plurality of objects to cause, via a third active GUI element of the third plurality of active GUI elements, the second application program to at least partially perform the second action, the second action programmatically emulating a user's interaction with the third active GUI element; and

after the second application program performs the second action, refreshing the object hierarchy to obtain a second refreshed object hierarchy comprising a fourth plurality of objects corresponding to a fourth plurality of active GUI elements reflecting changes in a user interface of the second application program.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 052247 FRAME: 0511. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Mar 25, 2022
From: SOFTWARE ROBOTICS CORPORATION
To: SOROCO PRIVATE LIMITED
Reel/Frame 059510/0565 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 052247 FRAME: 0298. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 23, 2021
From: MURTY, ROHAN NARAYAN
To: SOROCO PRIVATE LIMITED
Reel/Frame 059526/0202 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2020
From: MURTY, ROHAN NARAYAN
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052247/0298 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2020
From: NYCHIS, GEORGE PETER
To: SOFTWARE ROBOTICS CORPORATION
Reel/Frame 052247/0327 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2020
From: SOFTWARE ROBOTICS CORPORATION
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052247/0511 →
CHANGE OF NAME Recorded Mar 27, 2020
From: SOFTWARE ROBOTICS CORPORATION LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 052247/0532 →
Continuity (5)
Continuation 15942930 · Apr 2, 2018
Continuation 15059816 · Mar 3, 2016
Provisional Application 62155227 · Apr 30, 2015
Provisional Application 62127795 · Mar 3, 2015
Related Publication 20190302968A1 · Oct 3, 2019