IP Library Granted Patent US 10,802,662
Granted Patent B2
US 10,802,662 · App. 16/291,840 · Granted Oct 13, 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,802,662
App. No.
16/291,840
Granted
Oct 13, 2020
Kind
B2
Abstract

A 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: generating an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of a first application program; and controlling the first application program to perform a first sub-task. The controlling includes automatically accessing, in the object hierarchy, a first object corresponding to an active GUI element of the first application program, the accessing comprising searching for the first object in the object hierarchy, the searching comprising modifying the object hierarchy; and automatically using the first object to cause the first application program to at least partially perform a first action in furtherance of the first sub-task.

Claims (46)

1. A 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 control a first application program to perform a first action at least in part by:

automatically accessing, in an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of the first application program, a first object corresponding to a first active GUI element of the first application program, the accessing comprising searching for the first object in the object hierarchy, the searching comprising:

searching for a second object in the object hierarchy;

modifying the object hierarchy, when the first application program's graphical user interface has changed, by adding one or more new objects to the object hierarchy as descendants of the second object and/or removing one or more objects from the object hierarchy to obtain a modified hierarchy; and

searching for the first object in the modified object hierarchy; and

automatically using the first object to cause, via the first active GUI element, the first application program to at least partially perform the first action.

2. The system of claim 1 , wherein searching for the first object is performed using a search string formatted in accordance with a search grammar.

3. The system of claim 2 , wherein the search grammar comprises a token operator, an action operator, and a relationship operator.

4. The system of claim 3 , wherein the search string includes the action operator.

5. The system of claim 4 , wherein the action operator indicates how the object hierarchy is to be modified during performance of the search.

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

using the second object to cause the first application program to perform an action causing one or more new GUI elements of the first application program to become active; and

modifying the object hierarchy by adding the one or more new objects corresponding to the one or more new GUI elements as the descendants of the second object in the object hierarchy.

7. The system of claim 1 , wherein searching for the second object is performed using a search string formatted in accordance with a search grammar, the search string including an action operator.

8. 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.

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

10. A non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by at least one hardware processor, cause the at least one hardware processor to perform a method for controlling at least one application program to perform a task, the method comprising:

controlling a first application program to perform a first action associated with the task at least in part by:

automatically accessing, in an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of the first application program, a first object corresponding to a first active GUI element of the first application program, the accessing comprising searching for the first object in the object hierarchy, the searching comprising:

searching for a second object in the object hierarchy;

modifying the object hierarchy, when the first application program's graphical user interface has changed, by adding one or more new objects to the object hierarchy as descendants of the second object and/or removing one or more objects from the object hierarchy to obtain a modified hierarchy; and

searching for the first object in the modified object hierarchy; and

automatically using the first object to cause, via the first active GUI element, the first application program to at least partially perform the first action.

11. The non-transitory computer-readable storage medium of claim 10 , wherein searching for the first object is performed using a search string formatted in accordance with a search grammar.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the search grammar comprises a token operator, an action operator, and a relationship operator.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the search string includes the action operator.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the action operator indicates how the object hierarchy is to be modified during performance of the search.

15. The non-transitory computer-readable storage medium of claim 10 , wherein modifying the object hierarchy comprises:

using the second object to cause the first application program to perform an action causing one or more new GUI elements of the first application program to become active; and

modifying the object hierarchy by adding the one or more new objects corresponding to the one or more new GUI elements as the descendants of the second object in the object hierarchy.

16. A method for controlling at least one application program to perform a task, the method comprising:

using at least one computer hardware processor to perform:

controlling a first application program to perform a first action associated with the task at least in part by:

automatically accessing, in an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of the first application program, a first object corresponding to a first active GUI element of the first application program, the accessing comprising searching for the first object in the object hierarchy, the searching comprising:

searching for a second object in the object hierarchy;

modifying the object hierarchy, when the first application program's graphical user interface has changed, by adding one or more new objects to the object hierarchy as descendants of the second object and/or removing one or more objects from the object hierarchy to obtain a modified hierarchy; and

searching for the first object in the modified object hierarchy; and

automatically using the first object to cause, via the first active GUI element, the first application program to at least partially perform the first action.

17. The method of claim 16 , wherein searching for the first object is performed using a search string formatted in accordance with a search grammar.

18. The method of claim 17 , wherein the search grammar comprises a token operator, an action operator, and a relationship operator, and the search string includes the action operator.

19. The method of claim 16 , wherein modifying the object hierarchy comprises:

using the second object to cause the first application program to perform an action causing one or more new GUI elements of the first application program to become active; and

modifying the object hierarchy by adding the one or more new objects corresponding to the one or more new GUI elements as the descendants of the second object in the object hierarchy.

20. The method of claim 16 , wherein searching for the second object is performed using a search string formatted in accordance with a search grammar, the search string including an action operator.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 052293 FRAME: 0299. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Mar 25, 2022
From: SOFTWARE ROBOTICS CORPORATION
To: SOROCO PRIVATE LIMITED
Reel/Frame 059510/0548 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE AS LSITED ON THE ASSIGNMENT PREVIOUSLY RECORDED AT REEL: 052293 FRAME: 0267. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 23, 2021
From: MURTY, ROHAN NARAYAN
To: SOROCO PRIVATE LIMITED
Reel/Frame 059485/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2020
From: NYCHIS, GEORGE PETER
To: SOFTWARE ROBOTICS CORPORATION
Reel/Frame 052293/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2020
From: MURTY, ROHAN NARAYAN
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052293/0267 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2020
From: SOFTWARE ROBOTICS CORPORATION
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052293/0299 →
CHANGE OF NAME Recorded Apr 2, 2020
From: SOFTWARE ROBOTICS CORPORATION LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 052293/0340 →
Continuity (4)
Continuation 15059701 · Mar 3, 2016
Provisional Application 62155227 · Apr 30, 2015
Provisional Application 62127795 · Mar 3, 2015
Related Publication 20190196665A1 · Jun 27, 2019