IP Library Granted Patent US 10,671,235
Granted Patent B2
US 10,671,235 · App. 15/059,770 · Granted Jun 2, 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,671,235
App. No.
15/059,770
Granted
Jun 2, 2020
Kind
B2
Abstract

A system comprising at least one computer hardware processor; and at least one 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 at least one of a first application program and a second application program; controlling the first application program to perform a first sub-task of a task at least in part by using the object hierarchy; and controlling the second application program to perform a second sub-task of the task at least in part by using the object hierarchy, wherein the first and second application programs are configured to execute at least in part by using different GUI application libraries.

Claims (67)

1. A system, comprising:

at least one computer hardware processor; and

at least one computer-readable storage medium storing:

a computer program for controlling multiple application programs to perform a task comprising a first sub-task to be performed by a first application program and a second sub-task to be performed by a second application program; and

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 first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of the first application program, wherein:

 the first application program is configured to execute by using a first GUI application library, and

 the first plurality of active GUI elements comprise 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, wherein:

 the second application program is configured to execute by using a second GUI application library that is different than the first GUI application library, and

 the second plurality of active GUI elements comprise at least one active GUI element 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 the first sub-task using the computer program and the 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 the second sub-task using the computer program and the 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, when the controlling of the second application is performed, the object hierarchy comprises the first plurality of objects corresponding to the first plurality of active GUI elements of the first application program and the second plurality of objects corresponding to the second plurality of active GUI elements of the second application program.

3. The system of claim 1 , wherein controlling the first application program to perform the first sub-task comprises:

automatically accessing the first object in the object hierarchy corresponding to the first active GUI element of the first application program; and

automatically using the first object to cause the first application to perform the first action in furtherance of the first sub-task.

4. The system of claim 3 , wherein controlling the second application program to perform the second sub-task comprises:

automatically accessing the second object in the object hierarchy corresponding to the second active GUI element of the second application program; and

automatically using the second object to cause the second application to perform the second action in furtherance of the second sub-task.

5. The system of claim 4 , wherein:

automatically accessing the first object comprises searching for the first object in the object hierarchy using a search grammar; and

automatically accessing the second object comprises searching for the second object in the object hierarchy using the search grammar.

6. The system of claim 1 , wherein the first and second application programs are configured to execute using different operating systems.

7. The system of claim 1 , wherein the first application program is a WINDOWS application program configured to execute on a WINDOWS operating system and the second application program is a web-based application program configured to execute at least in part by using a web-browser application program.

8. The system of claim 1 , wherein the first application program is a WINDOWS application program and the second application program is a JAVA application program.

9. The system of claim 1 , wherein the first application program is an application program selected from the group consisting of an application program configured to execute on a mobile device, an application program configured to execute on a server, a WINDOWS application program, a LINUX GTK application program, an application program having component object model (COM) access, a JAVA application program, a FLASH application program, a SILVERLIGHT application program, a SAP application program, an ANDROID application program, an ORACLE application program, a web-based application program, an HTML application program, a JAVASCRIPT application program, an AJAX application program, a WINDOWS MOBILE application program, an IOS application program, a SOLARIS application program, an IBM AIX application program, and a proxy application program that is used as a proxy for controlling another application program.

10. The system of claim 1 , wherein the first and second application programs are configured to execute at least in part by using different software platforms.

11. The system of claim 10 , wherein the different software platforms include a first software platform selected from the group consisting of a WINDOWS operating system, a LINUX operating system, a JAVA virtual machine, a web-browser, an operating system configured to execute on a mobile device, a SAP platform, and an ORACLE platform.

12. A system, comprising:

at least one computer hardware processor; and

at least one 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 first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of a first application program, wherein:

the first application program is configured to execute by using a first GUI application library, and

the first plurality of active GUI elements comprise 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 a second application program, wherein:

the second application program is configured to execute by using a second GUI application library that is different than the first GUI application library, and

the second plurality of active GUI elements comprise at least one active GUI element 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 a task using the 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 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.

13. The system of claim 12 , wherein the first and second application programs are configured to execute using different operating systems.

14. The system of claim 12 , wherein the first application program is a WINDOWS application program configured to execute on a WINDOWS operating system and the second application program is a web-based application program configured to execute at least in part by using a web-browser application program.

15. The system of claim 12 , wherein the first application program is a WINDOWS application program and the second application program is a JAVA application program.

16. The system of claim 12 , wherein the first application program is an application program selected from the group consisting of an application program configured to execute on a mobile device, an application program configured to execute on a server, a WINDOWS application program, a LINUX GTK application program, an application program having component object model (COM) access, a JAVA application program, a FLASH application program, a SILVERLIGHT application program, a SAP application program, an ANDROID application program, an ORACLE application program, a web-based application program, an HTML application program, a JAVASCRIPT application program, an AJAX application program, a WINDOWS MOBILE application program, an IOS application program, a SOLARIS application program, an IBM AIX application program, and a proxy application program that is used as a proxy for controlling another application program.

17. The system of claim 12 , wherein the first and second application programs are configured to execute at least in part by using different software platforms.

18. The system of claim 17 , wherein the different software platforms include a first software platform selected from the group consisting of a WINDOWS operating system, a LINUX operating system, a JAVA virtual machine, a web-browser, an operating system configured to execute on a mobile device, a SAP platform, and an ORACLE platform.

19. The system of claim 1 , wherein the first object comprises information indicating a displayed location of the first active GUI element.

20. The system of claim 19 , wherein the second object comprises information indicating a displayed location of the second active GUI element.

21. A method, comprising:

using at least one computer hardware processor to perform:

generating an object hierarchy comprising:

a first plurality of objects corresponding to a first plurality of active graphical user interface (GUI) elements of a first application program, wherein:

the first application program is configured to execute by using a first GUI application library, and

the first plurality of active GUI elements comprise 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 a second application program, wherein:

the second application program is configured to execute by using a second GUI application library that is different than the first GUI application library, and

the second plurality of active GUI elements comprise at least one active GUI element 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 a task using the 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 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 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 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.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 040361 FRAME: 0214. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Mar 25, 2022
From: SOFTWARE ROBOTICS CORPORATION
To: SOROCO PRIVATE LIMITED
Reel/Frame 059510/0573 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 040361 FRAME: 0234. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Nov 23, 2021
From: MURTY, ROHAN NARAYAN
To: SOROCO PRIVATE LIMITED
Reel/Frame 060366/0335 →
CHANGE OF NAME Recorded Aug 30, 2017
From: SOFTWARE ROBOTICS CORPORATION LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 043446/0577 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2016
From: NYCHIS, GEORGE PETER
To: SOFTWARE ROBOTICS CORPORATION
Reel/Frame 040361/0182 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2016
From: SOFTWARE ROBOTICS CORPORATION
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 040361/0214 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2016
From: MURTY, ROHAN NARAYAN
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 040361/0234 →
Continuity (3)
Provisional Application 62155227 · Apr 30, 2015
Provisional Application 62127795 · Mar 3, 2015
Related Publication 20160259653A1 · Sep 8, 2016