United States Patent (10) Patent No.: US 6,601,087 B1: Zhu Et Al. (45) Date of Patent: Jul. 29, 2003

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

USOO66O1087B1

(12) United States Patent (10) Patent No.: US 6,601,087 B1


Zhu et al. (45) Date of Patent: Jul. 29, 2003

(54) INSTANT DOCUMENT SHARING 5,694,544. A * 12/1997 Tanigawa et al. ........... 345/753
5,903,716 A * 5/1999 Kimber et al. ............. 358/1.13
(75) Inventors: Min Zhu, Los Altos Hills, CA (US); 5,944,791 A 8/1999 Scherphier - - - - - - - - - - - - - - - - - - 709/218
Guanghong Yang, Mountain View, CA 6,119,137 A * 9/2000 Smith et al. ................ 707/513
(US) s s 6,144.991 A * 11/2000 England ..................... 345/733
6,185,683 B1 2/2001 Ginter et al. ................. 705/52
O O 6,266,150 B1 7/2001 Brossman et al. ......... 358/1.12
(73) Assignee: WebEx Communications, Inc., San 6,343,313 B1 * 1/2002 Salesky et al. ............. 345/751
Jose, CA (US)
- * cited by examiner
(*) Notice: Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U.S.C. 154(b) by 0 days. Primary Examiner Mehmet B. Geckil
(74) Attorney, Agent, or Firm-Fish & Richardson P.C.
(21) Appl. No.: 09/442,424 (57) ABSTRACT
(22) Filed: Nov. 17, 1999 An apparatus, method, and computer program product for
instant document Sharing. In one embodiment, referred to as
Related U.S. Application Data "document sharing,” a file is converted to a “shared docu
(60) Provisional application No. 60/109,026, filed on Nov. 18, ment” which is distributed to the members of a data con
1998. ference for review. In another embodiment, referred to as
(51) Int. Cl. ................................................ G06F 15/16 “application viewing,” the “owner of a document shares the
(52) U.S. Cl. ........................ 7091205. 709/204. 709/246 Screens created by an application associated with the docu
(58) Field of Search ................................. 709/204, 205, ment. The other members of the data conference can view
709/245, 246 the Screens, but cannot Interact with the application. In
another embodiment, referred to as “application sharing,
(56) References Cited the owner" of a document shares the Screens created by an
application associated with the document. The other mem
U.S. PATENT DOCUMENTS bers of the data conference can view the Screens and interact
5,051.926. A * 9/1991 Stevens et al. ............ ss with the application.
5,577,188 A 11/1996 Zhu ................. ... 395/326
5,623,603 A 4/1997 Jiang et al. ................. 395/200 44 Claims, 14 Drawing Sheets

SERVER

EDITOR
206B

OPERATING OPERATING
SYSTEM MEMORY SYSTEM MEMORY

FILE DOCUMENT DOCUMENT


EDITING SHARING SHARING
APPLICATION APPLICATION APPLICATION
U.S. Patent Jul. 29, 2003 Sheet 1 of 14 US 6,601,087 B1

100 SERVER
102

CLIENT CLIENT CLIENT


104B 104N

FIG. 1
U.S. Patent Jul. 29, 2003 Sheet 2 of 14 US 6,601,087 B1

H01/5 8903

HE/ 3S
U.S. Patent Jul. 29, 2003 Sheet 4 of 14 US 6,601,087 B1

APPLICATION
PROGRAM(S)

OS WINDOW
SYSTEM

DISPLAY
DRIVER

FIG. 4
U.S. Patent Jul. 29, 2003 Sheet 5 of 14 US 6,601,087 B1

C13H/S WEH OS J170d/]


013
U.S. Patent Jul. 29, 2003 Sheet 6 of 14 US 6,601,087 B1

DOCUMENT DOCUMENT
FILEEDITING SHARING SHARING
APPLICATION APPLICATION APPLICATION
(OWNER) (EDITOR)

212
PRINTER
-514
SHARED
CLOSE DOCUMENT
APPLICATION
USER INPUT

FIG. 6
U.S. Patent Jul. 29, 2003 Sheet 7 of 14 US 6,601,087 B1

702
USERSELECTS FILE TO SHARE
704
IWWOKEAPPLICATIONASSOCATED WITH FILE
706
CHECKDEFAULTPRINTER

708
IS
DEFAULTPRINTER =
IRTUALPRINTE
NO 710
SAVE DEFAULTPRINTER
712
SELECTVIRTUAL PRINTERAS DEFAULT
PRINTER
714
PRINT FILE, CREATING SHARED DOCUMENT
7 16
RESTORE DEFAULTPRINTERIF NEEDED
7 18
CLOSEAPPLICATION IF NEEDED
720
SEND SHARED DOCUMENT TO SERVER FOR
DISTRIBUTION TO OTHER CLIENTS
722
CLIENTS DISPLAYSHARED DOCUMENT
USINGA VIEWERAPPLICATION

FIG. 7
U.S. Patent Jul. 29, 2003 Sheet 8 of 14 US 6,601,087 B1

DOCUMENT DOCUMENT
FILEEDITING SHARING SHARING
APPLICATION APPLICATION APPLICATION
(OWNER) (EDITOR)

802
APPLICATION
SCREEN
212 7-508
SHARED
SCREEN

USER INPUT

USER INPUT

APPLICATON
SCREEW UPDATE 7-510
SHARED SCREEN
808 UPDATE

FIG. 8
U.S. Patent Jul. 29, 2003 Sheet 9 of 14 US 6,601,087 B1

902
USERSELECTS APPLICATION TO WIEW

904
INVOKEAPPLICATION, GENERATING AN
APPLICATION SCREEN

906
SEND APPLICATION SCREEN TO WIRTUAL
DISPLAY CREATING ASHARED SCREEN

908
SEND SHARED SCREEN TO SERVER

910
SERVER DISTRIBUTES SHARED SCREEN TO
OTHER CLIENTS

912
CLIENTS DISPLAYSHARED SCREEN USING
VIEWERAPPLICATION

FIG. 9A
U.S. Patent Jul. 29, 2003 Sheet 10 of 14 US 6,601,087 B1

GA)
914
RECEIVE INPUT FROM LOCAL USER

916
DRIVEAPPLICATION TO EDTAPPLICATION
SCREEN BASED ONUSER INPUT

918
RECEIVEAPPLICATION SCREEN UPDATE FROM
APPLICATION

SENDAPPLICATION SCREEN UPDATE TO 920


VIRTUAL DISPLAY CREATING ASHARED
SCREEN UPDATE

922
FORWARD SHARED SCREEN UPDATE TO
SERVER

924
SERVER DISTRIBUTES SHARED
SCREEN UPDATE TO OTHER CLIENTS

CLIENTS REVISE SHAREDsCREENAND 9.6


DISPLAY REWISED SHARED SCREEN USING
VIEWERAPPLICATION

FIG. 9B
U.S. Patent Jul. 29, 2003 Sheet 11 of 14 US 6,601,087 B1

FILEEDITING
APPLICATION
PSEE, DOCUMENT
SHARING
APPLICATION APPLICATION
(OWNER) (EDITOR)
1002 210B
APPLICATION 7-508
SCREEN SHARED
212 SCREEW
1004
EDITOR l/
1004 USER INPUT
EDITOR
USER INPUT

1006
APPLICATION
SCREEN UPDATE
7-510A
SHARED SCREEN
1008 UPDATE
OWNER
USER INPUT

1010
APPLICATION
SCREEN UPDATE
7-510B
SHARED SCREEN
UPDATE

FIG 10
U.S. Patent Jul. 29, 2003 Sheet 12 of 14 US 6,601,087 B1

1102
USER SELECTS APPLICATION TO SHARE

1104
INVOKEAPPLICATION, GENERATING AN
APPLICATION SCREEN

1106
SEND APPLICATION SCREEN TO WIRTUAL
DISPLAY CREATING ASHARED SCREEN

1108
SEND SHARED SCREEN TO SERVER

1110
SERVER DISTRIBUTES SHARED SCREEN TO
OTHER CLIENTS

1112
CLIENTS DISPLAYSHARED SCREEN USING
VIEWERAPPLICATION

FIG. 11A
U.S. Patent Jul. 29, 2003 Sheet 13 of 14 US 6,601,087 B1

(A)

1114
RECEIVE USER INPUT FROM REMOTE
COMPUTER

1116
DRIVEAPPLICATION TO EDTAPPLICATION
SCREEN BASED ONUSER INPUT

1118
RECEIVEAPPLICATION SCREEN UPDATE
FROMAPPLICATION

SENDAPPLICATION SCREEN UPDATE TO 1120


VIRTUAL DISPLAY CREATING ASHARED
SCREEN UPDATE

1122
FORWARD SHARED SCREEN UPDATE TO
SERVER

1124
SERVER DISTRIBUTES SHARED SCREEN
UPDATE TO OTHER CLIENTS

1126
CLIENTS REWISE SHARED SCREEN AND
DISPLAY REWISED SHARED SCREEN
USING WIEWERAPPLICATION

FIG 11B
U.S. Patent Jul. 29, 2003 Sheet 14 of 14 US 6,601,087 B1

1206 1204
PROCESSOR
- 1200 COMPUTER SYSTEM

MAIN MEMORY
1210
SECONDARY MEMORY
BUS
HARD DISKDRIVE

REMOVABLESTORAGE REMOVABLE
UNIT

REMOVABLE
INTERFACE STORAGE
UNIT

COMMUNICATIONS
INTERFACE
US 6,601,087 B1
1 2
INSTANT DOCUMENT SHARING other members of the data conference can view the Screens,
but cannot interact with the application. Only the owner can
RELATED APPLICATIONS interact with the application. The method of this embodi
ment includes invoking the application on a local computer,
This application claims the benefit of U.S. Provisional thereby generating an application Screen. The application
Application No. 60/109,026, filed Nov. 18, 1998. Screen is Sent to a virtual device, thereby creating a “shared
Screen.” The Shared Screen is sent to a remote Server for
BACKGROUND OF THE INVENTION
distribution to remote computers, where the shared Screen is
1. Field of the Invention displayed by a viewer application. The user of the local
The present invention relates generally to data computer (referred to as the "owner) provides user input
conferencing, and more particularly to instant document while editing the shared Screen. The user input drives the
Sharing in a data conference. application to edit the application Screen based on the user
2. Related Art input. In response, the application provides an application
Screen update. The application Screen update is Sent to the
Whenever two or more people are involved in the prepa 15 Virtual device, thereby creating a shared Screen update. The
ration of a document, whether it be a financial spread sheet, shared Screen update is Sent to the remote Server for distri
a CAD design, a circuit Schematic layout, an organization bution to the remote computers, thereby updating the display
report, a bit map image, etc., Succeeding drafts of the of the application Screen by the viewer applications.
document are prepared, circulated, and modified in the In another embodiment, referred to as “application
process. Each perSon annotates his or her remarks on the Sharing, the “owner of a document shares the Screens
document and forwards it to the next perSon. Typically, created by an application associated with the document. The
several drafts of the document will be circulated before a other members of the data conference can view the Screens
final draft is produced. This is a very time-consuming and interact with the application. The method of this
proceSS.
embodiment includes invoking the application on a local
In the case where the reviewers involved in this document 25 computer, generating an application Screen. The application
preparation process are at different geographical locations, Screen is Sent to a virtual device, creating a shared Screen.
getting the document from one location to another location The shared Screen is sent to a remote server for distribution
and back becomes another tedious and time-consuming task. to the remote computers used by the members of the data
The document must be mailed or faxed to that person, conference, where the shared Screen is displayed by a viewer
further complicating the entire process. application. The members edit the shared Screen, thereby
One alternative method to this proceSS is to hold meetings generating user input that is Sent to the local computer. The
where the reviewers gather and comment on the document user input drives the application to edit the application
with the hope to reduce the number of drafts needed before Screen based on the user input. In response, the application
a final draft is produced. The shortcoming with this method provides an application Screen update. The application
is that there may be significant travel time and travel cost in 35 Screen update is Sent to the virtual device, thereby creating
getting everyone to the same location. In addition, the final a shared Screen update. The shared Screen update is sent to
draft of the document is usually circulated again for final the remote Server for distribution to the remote computers,
COmmentS. thereby updating the display of the application Screen by the
One Solution to this problem is to use a teleconferencing Viewer applications.
40
Software program to share the document among the geo In all embodiments, an annotation mode is available,
graphically dispersed reviewers. This process is often where a transparent window is displayed over the shared
referred to as “data conferencing.” By using computer document. Users can create objects to be displayed in the
network connections, modem-connected phone lines, and transparent window, thereby annotating the document.
the like, everyone can be connected via his or her computer. 45
One advantage of the present invention is that, by Sharing
By using the teleconferencing Software program, everyone's documents in a client-Server System, it provides robust,
computer Screen displays the same document. In addition to Scalable, instant document Sharing.
using the Software program and network or modem Further features and advantages of the present invention
connections, conference calling over the Voice phone lines as well as the Structure and operation of various embodi
or through the Software program creates a dynamic and live 50 ments of the present invention are described in detail below
atmosphere where everyone can participate in the discussion with reference to the accompanying drawings.
and refer to the document displayed on the Screen.
BRIEF DESCRIPTION OF THE DRAWINGS
SUMMARY OF THE INVENTION The present invention will be described with reference to
The present invention is an apparatus, method, and com 55
the accompanying drawings.
puter program product for instant document sharing. In one FIG. 1 depicts an example client-Server System in which
embodiment, referred to as “document sharing,” a file is the present invention may be used.
converted to a “shared document” which is distributed to the FIG. 2 depicts two clients engaged in a data conference
members of a data conference for review. The method of this using a Server.
embodiment includes printing the file, on a local computer, 60 FIG. 3 is a block diagram of document Sharing application
to a virtual printer from an application associated with the according to a preferred embodiment of the present inven
file, thereby creating the shared document; and Sending the tion.
shared document to one or more remote computers, where FIG. 4 depicts the software layers in a structured system
the shared document is displayed by a viewer application. environment.
In another embodiment, referred to as “application 65 FIG. 5 depicts the software layers in a structured system
Viewing,” the "owner of a document shares the Screens environment as modified by a preferred embodiment of the
created by an application associated with the document. The present invention.
US 6,601,087 B1
3 4
FIG. 6 is a flow diagram depicting the operation of example, the file editing application can be MicroSoft Word,
document sharing mode according to a preferred embodi and the document to be shared can be a Microsoft Word
ment of the present invention. document. client 204B has assumed the role of editor.
FIG. 7 is a flowchart depicting the operation of document FIG. 3 is a block diagram of document Sharing application
Sharing mode according to a preferred embodiment of the 210 according to a preferred embodiment of the present
present invention. invention. In a preferred embodiment, document sharing
FIG. 8 is a flow diagram depicting the operation of application 210 is configured as a browser plug-in that can
application viewing mode according to a preferred embodi be downloaded from the Internet and installed on a computer
ment of the present invention. running a WindowS-type operating System and a browser
FIGS. 9A and 9B constitute a flowchart depicting the such as Windows Internet Explorer.
operation of application viewing mode according to a pre In order to share a document, document sharing applica
ferred embodiment of the present invention. tion 210 first converts the document to another form by
FIG. 10 is a flow diagram depicting the operation of “loading” the document, as will be discussed in detail below.
application sharing mode according to a preferred embodi Therefore, the document sharing application 210 includes
15 document loader 302. Depending on the sharing mode,
ment of the present invention. document loading may involve invoking an application
FIGS. 11A and 11B constitute a flowchart depicting the asSociated with the document. Accordingly, document
operation of application sharing mode according to a pre loader 302 includes an application invoker 304. The present
ferred embodiment of the present invention. invention also uses virtual devices and drivers in document
FIG. 12 depicts an example computer System capable of loading. Accordingly, document loader 302 includes virtual
carrying out the functionality of the present invention. devices and drivers 306.
DESCRIPTION OF THE PREFERRED When a document has been loaded, a viewer application
308 allows the user to view the document. A client shares a
EMBODIMENTS
loaded document by transmitting data to other clients, and
The present invention is described in terms of the above 25 receiving Such data, using communication module 310.
example. This is for convenience only and is not intended to Methods for exchanging Such data are discussed extensively
limit the application of the present invention. In fact, after in U.S. Pat. No. 5,623,603, assigned to the assignee of the
reading the following description, it will be apparent to one present application, and the disclosure thereof incorporated
skilled in the relevant art how to implement the present herein by reference in its entirety.
invention in alternative embodiments. An editing module 312 enables users to perform editing
Introduction functions. Document editor 314 allows users to edit a shared
The present invention is an apparatus, method, and com document. Overlay editor 316 allows users to edit the
puter program product for Sharing documents and applica transparent Overlay Screen. Annotating the transparent Win
tions in a client-Server System having multiple remote cli dow and Sending data representing the annotations to a
ents. FIG. 1 depicts an example client-server system 100 in 35 remote computer, where the annotations are drawn on the
which the present invention may be used. System 100 display, is discussed extensively in U.S. Pat. No. 5,577,188,
includes a server 102 and a plurality of clients 104A, 104B, assigned to the assignee of the present application, and the
104N. The present invention is usually invoked after a data disclosure thereof incorporated herein by reference in its
conference has been established. Methods for establishing entirety.
data conferences among clients are well-known in the rel 40 Structured System Programming Environment
eVant artS. Before proceeding to the discussion of the methods of
The present invention provides four modes to Support document Sharing, the Software layers in a structured System
different kinds of data Sharing and collaboration: document programming environment Such as MicroSoft Windows are
Sharing mode, application viewing mode, application Shar explained. Referring to FIGS. 4 and 5, in starting the
ing mode, and annotation mode. In each mode, a document 45 document sharing application 210, the Software layers in a
is shared among the clients. Structured System programming environment are modified.
In each mode, a client assumes one of four roles: owner, FIG. 4 depicts the Software layers in a structured system
host, editor, and Spectator. The owner is client that provides environment. In this environment, a running application
the document. The host is the client that has control of the program 402 interfaces with input and output devices Strictly
data conference. An editor is a client that is allowed to edit 50 through the operating System S Window System
the document. An annotator is a client that can edit a environment, represented by OS Window system 404. When
transparent window that overlays the document. A spectator the application program requests the OS Window System to
is a client that can view the document and transparent write a character to the screen, the OS Window system in
window, but cannot edit them. turn directs a display driver 406 to write the character to the
FIG. 2 depicts two clients 204 engaged in a data confer 55 monitor 408. A driver such as a display driver is a software
ence using a Server 102. One key advantage of using a program written specifically to handle a Specific device or
client-Server architecture rather than a peer-to-peer archi device type, such as monitor 408. For example, there are
tecture is that no client is burdened with communicating Several Standards of display resolution with computer moni
with all of the other clients. It merely communicates with the tors. A display driver is needed for each Standard in order to
Server. This advantage permits the System to be highly 60 control and interface with each type of monitor.
Scalable, for example, to Serve a data conference involving Display driver 406 tells the monitor 408 specifically how
a large number of clients. to write a character on the Screen. For example, in an
Referring to FIG. 2, each client includes an operating application program Such as a word processor running on
system 206, such as Windows, a memory 208, and a top of OS Window system 404, when the user inputs a
document sharing application 210. Client 204A has assumed 65 character “a” from the keyboard and when the word pro
the role of owner, and So includes a file editing application ceSSor receives the character “a” as input, the word proces
212 that is associated with the document to be shared. For Sor will display the character “a” on the Screen at the right
US 6,601,087 B1
S 6
place to reassure the user that he or She has input a character the associated file editing application based on associations
“a”. To write the character “a” to the screen, the word established by the operating System according to methods
processor calls a OS Window system 404 write-to-screen well-known in the relevant arts. If the file editing application
routine, Specifying the character “a” and the location on the is already running, Step 704 merely involves opening the
screen to place the character. The OS Window system 404 Selected file using the associated file editing application.
routine in turn calls the display driver with the given However, if the file editing application is not open when the
information, and the display driver Specifically tells the file is Selected, the file editing application is launched first.
computer Screen the placement of dots on the Screen to The default printer associated with file editing application
compose the Visual image resembling the character “a”. 212 or Windows is checked in step 706. If the default printer
In activating document Sharing application 210, referring is not set to be the virtual printer associated with virtual
to FIG. 5, the Software layer structure is modified. The printer driver 512, then the default printer is saved in step
application call to OS Window system 404 is redirected to 710 and the virtual printer is selected as the default printer
a virtual display device 504. Virtual display device 504 is in step 712. Otherwise, steps 710 and 712 are skipped.
one of the virtual devices and drivers 306 within document The selected file is then printed to the virtual printer in
loader 302. 15 step 714. Referring to FIG. 5, this operation entails redi
In a preferred embodiment, redirection of the application recting the print call from file editing application 502 at the
calls to OS Window system is accomplished by renaming OS Window System 404 to virtual printer driver 512,
the appropriate OS Window System calls with predefined thereby creating shared document 514. Shared document
alternate calls and naming the virtual display device to the 514 is then passed to document sharing application 210 for
OS Window system's original calls. When the application Viewing and distribution. If necessary, the default printer is
calls the OS Window System via its name, it is calling the restored in step 716. If file editing application 502 was
virtual display device rather than the OS Window System. launched in step 704, then it is closed in step 718.
The virtual display device calls the OS Window system Document Sharing application 210, on receipt of Shared
through its predefined names. The Virtual display device document 514, sends the shared document to server 102 for
calls the OS Window system with the information to place 25 distribution to the other clients in the data conference. All of
on the Screen as requested by a file editing application 502, the clients in the data conference then display the shared
which can be any application Such as a word processor. document using viewer application 308, as shown in Step
In one embodiment, virtual display driver 504 reports the 722.
Screen updates to document sharing application 210 via In FIG. 6, time flows from top to bottom. Referring to that
dynamic link library 506. When the screen updates are figure, virtual printer driver 512 generates printer file 602
finished, document sharing application 210 reads the Screen which is modified by document sharing application 210A to
updates stored in dynamic link library 506. In annotation create a shared document 514. Document Sharing applica
mode, document sharing application 210 checks for over tion 210A then displays shared document 514 and forwards
lapping Screen objects and re-draws the annotation objects if it to document sharing application 210B for display. Using
necessary. This process is fully explained in U.S. Pat. No. 35 annotation mode, the two document sharing applications can
5,577,188. eXchange user input 604 to draw various objects upon a
In another embodiment, document Sharing application transparent window overlaying the shared document 514.
210 creates a shared screen 508, or a shared screen update Application Viewing Mode
510, which is passed directly to document Sharing applica FIG. 8 is a flow diagram depicting the operation of
tion 210 for display, and for transmission to other clients in 40 application viewing mode according to a preferred embodi
the data conference for display to other users. This embodi ment of the present invention. FIGS. 9A and 9B constitute
ment is used in the application viewing and application a flowchart depicting that operation.
Sharing modes, as described in detail below. A user of document sharing application 210A Selects a file
In document sharing mode, a representation of the entire editing application to view in step 902. In response, the file
document is sent to each client's viewer application 308. In 45 editing application is invoked, generating an application
one embodiment, this is accomplished by using a virtual screen 802, as shown in step 904. Document sharing appli
printer driver 512, rather than a virtual display driver. The cation 210A causes application screen 802 to be sent to
document to be shared is printed from its associated file virtual display driver 504, thereby generating a shared
editing application 502 to virtual printer driver 512, creating screen 508 as shown in step 906. The shared screen is passed
a shared document 514 in a predefined format. Shared 50 back to document sharing application 210A, which Sends the
document 514 is passed directly to document sharing appli shared screen to server 102 in step 908. Server 102 distrib
cation 210 for display, and for transmission to other clients utes the shared Screen to the other clients in the data
in the data conference for display to other users. conference in step 910. In step 912, the other clients in the
Document Sharing Mode data conference, Such as the client running document Shar
FIG. 6 is a flow diagram depicting the operation of 55 ing application 210B, display the shared Screen using viewer
document sharing mode according to a preferred embodi application 308.
ment of the present invention. FIG. 6 depicts the data flows Referring to FIG. 8, the users in the data conference that
between file editing application 212, document Sharing have been granted the role of editor can exchange user input
application 210A running on owner client 204A and docu in the form of annotations 804. However, in application
ment sharing application 210B running on editor client 60 Viewing mode, the application is controlled only by the
204B. FIG. 7 is a flowchart depicting this operation. owner's user input 806. The other clients in the data con
Referring to FIG. 7, the user of owner client 204A selects ference are not permitted to control the application directly.
a file to share in Step 702. In response, the application When document sharing application 210A receives input
invoker of document Sharing application 210A invokes the from the local user in step 914, it forwards this user input
file editing application 212 associated with the Selected file 65 806 to file editing application 502 to drive the application to
in step 704. In a preferred embodiment, the application edit the application Screen based on that input, as shown in
invoker employs automatic application association to Select Step 916. In response, the application provides an applica
US 6,601,087 B1
7 8
tion screen update 808, which is received by the owner implemented in a computer System or other processing
document sharing application 210A in step 918. Document System. In fact, in one embodiment, the invention is directed
Sharing application 210A sends application Screen update toward one or more computer Systems capable of carrying
808 to virtual display driver 504, thereby creating a shared out the functionality described herein. An example computer
screen update 510, as shown in step 920. Referring to FIG. system 1200 is shown in FIG. 12. The computer system
5, shared Screen update 510 is passed to document sharing 1200 includes one or more processors, Such as processor
application 210B. 1204. The processor 1204 is connected to a communication
bus 1206. Various Software embodiments are described in
Document sharing application 210A forwards the shared terms of this example computer System. After reading this
screen update to server 102 in step 922. The server distrib description, it will become apparent to a person skilled in the
utes the shared Screen update to the other clients in the data relevant art how to implement the invention using other
conference, as shown in Step 924. In response, the clients computer Systems and/or computer architectures.
revise the shared Screen currently being displayed using the Computer system 1200 also includes a main memory
shared Screen update, and display the revised shared Screen 1208, preferably random access memory (RAM), and can
in step 926. also include a secondary memory 1210. The secondary
Application Sharing Mode 15 memory 1210 can include, for example, a hard disk drive
FIG. 10 is a flow diagram depicting the operation of 1212 and/or a removable Storage drive 1214, representing a
application sharing mode according to a preferred embodi floppy disk drive, a magnetic tape drive, an optical disk
ment of the present invention. FIGS. 11A and 11B constitute drive, etc. The removable storage drive 1214 reads from
a flowchart depicting that operation. and/or writes to a removable storage unit 1218 in a well
A user of document Sharing application 210A Selects an known manner. Removable Storage unit 1218, represents a
application to view in Step 1102. In response, the application floppy disk, magnetic tape, optical disk, etc. which is read by
is invoked, generating an application Screen 1002, as shown and written to by removable storage drive 1214. As will be
in step 1104. Document sharing application 210A causes appreciated, the removable Storage unit 1218 includes a
application screen 1002 to be sent to virtual display driver computer usable Storage medium having Stored therein
504, thereby generating a shared screen 508 as shown in step 25 computer Software and/or data.
1106. The shared screen is passed back to document sharing In alternative embodiments, secondary memory 1210 may
application 210A, which sends the shared Screen to Server include other Similar means for allowing computer programs
102 in step 1108. Server 102 distributes the shared screen to or other instructions to be loaded into computer System
the other clients in the data conference in step 1110. In step 1200. Such means can include, for example, a removable
1112, the other clients in the data conference display the storage unit 1222 and an interface 1220. Examples of Such
shared screen using viewer application 308. include a program cartridge and cartridge interface (Such as
In application sharing mode, both the owner and editors that found in Video game devices), a removable memory
are permitted to control the file editing application directly. chip (such as an EPROM, or PROM) and associated socket,
Steps 1114 through 1126 illustrate this process. Referring to and other removable storage units 1222 and interfaces 1220
FIG. 10, a user of document sharing application 210B 35 which allow software and data to be transferred from the
generates editor user input 1004, which is sent to owner removable storage unit 1218 to computer system 1200.
210A. Owner 210A receives the editor user input in step Computer System 1200 can also include a communica
1114, and forwards this input to file editing application 212, tions interface 1224. Communications interface 1224 allows
thereby driving that application to edit the current applica Software and data to be transferred between computer Sys
tion screen based on editor user input 1004 as shown in step 40 tem 1200 and external devices. Examples of communica
1116. In response, the file editing application generates an tions interface 1224 can include a modem, a network inter
application screen update 1006, which is received at owner face (Such as an Ethernet card), a communications port, a
210A in step 1118. Owner 210A sends the application screen PCMCIA slot and card, etc. Software and data transferred
update to virtual display driver 504, thereby creating a via communications interface 1224 are in the form of Signals
shared screen update 510A, as shown in step 1120. 45 which can be electronic, electromagnetic, optical or other
Referring to FIG. 5, shared screen update 510A is passed Signals capable of being received by communications inter
to document sharing application 210A, which forwards the face 1224. These signals 1226 are provided to communica
shared screen update to server 102, as shown in step 1122. tions interface 1224 via a channel 1228. This channel 1228
The server distributes the shared screen update to the other carries signals 1226 and can be implemented using wire or
clients in the data conference, as shown in Step 1124. Each 50 cable, fiber optics, a phone line, a cellular phone link, an RF
client revises the current shared Screen using the shared link and other communications channels.
Screen update, and displays the revised shared Screen using In this document, the terms “computer program medium’
its viewer application 308, as shown in step 1126. The and “computer usable medium' are used to generally refer
process of steps 1114 through 1126 is repeated as needed for to media Such as removable Storage device 1218, a hard disk
user input from both the local computer and remote com 55 installed in hard disk drive 1212, and signals 1226. These
puters. computer program products are means for providing Soft
FIG. 10 also depicts the process whereby the local user ware to computer system 1200.
(owner) controls the application. According to this process, Computer programs (also called computer control logic)
owner user input 1008 is sent from owner 210A to file are stored in main memory 1208 and/or secondary memory
editing application 212, thereby driving it to edit the current 60 1210. Computer programs can also be received via commu
application Screen, and provide an application Screen update nications interface 1224. Such computer programs, when
1010. The application screen update is sent to virtual display executed, enable the computer system 1200 to perform the
driver 504, creating a shared screen update 510B, which is features of the present invention as discussed herein. In
displayed and forwarded to server 102 for distribution to particular, the computer programs, when executed, enable
other clients, which revised their Screens accordingly. 65 the processor 1204 to perform the features of the present
The present invention may be implemented using invention. Accordingly, Such computer programs represent
hardware, Software or a combination thereof and may be controllers of the computer system 1200.
US 6,601,087 B1
9 10
In an embodiment where the invention is implemented 4. The apparatus of claim 3, wherein:
using Software, the Software may be Stored in a computer the communication module is further configured to
program product and loaded into computer System 1200 receive data representing a further user-defined object
using removable storage drive 1214, hard drive 1212 or and a further user-specified position from the remote
communications interface 1224. The control logic 5 computer and the first viewer application is further
(software), when executed by the processor 1204, causes the configured to display the further user-defined object at
processor 1204 to perform the functions of the invention as the further user-specified position within the transpar
described herein. ent window, the transparent window appearing to be
In another embodiment, the invention is implemented displayed over the shared document.
primarily in hardware using, for example, hardware com 5. The apparatus of claim 1, wherein the communication
ponents Such as application specific integrated circuits module is further configured to Send the shared document to
(ASICs). Implementation of the hardware state machine so a plurality of other remote computers, each of the plurality
as to perform the functions described herein will be apparent of other remote computers including a viewer application to
to persons skilled in the relevant art(s). In yet another Simultaneously display the shared document during the live
embodiment, the invention is implemented using a combi 15 data conference.
nation of both hardware and Software. 6. The apparatus of claim 5, wherein the communication
While various embodiments of the present invention have module Sends the shared document to the remote computer
been described above, it should be understood that they have and the plurality of other remote computers through a
been presented by way of example, and not limitation. It will remote Server, the remote Server distributing the shared
be apparent to perSons skilled in the relevant art that various document to the remote computer and the plurality of other
changes in form and detail can be placed therein without remote computers.
departing from the Spirit and Scope of the invention. Thus the 7. An apparatus, comprising:
present invention should not be limited by any of the a local computer including a first viewer application;
above-described example embodiments, but should be 25
an application invoker configured to invoke an application
defined only in accordance with the following claims and on the local computer, the application to generate an
their equivalents. application Screen;
What is claimed is: a document loader configured to Send the application
1. An apparatus for automatically sharing a file, compris Screen to a virtual device, the Virtual device to create a
ing: shared Screen for use in a live data conference, the first
a local computer including: viewer application to display the shared Screen on the
a document loader; local computer;
a first viewer application; a communication module configured to Send the Shared
a virtual printer; and Screen to a remote Server for distribution to a remote
a communication module, 35 computer, the remote computer including a Second
wherein the document loader is configured to print a file viewer application configured to display the shared
from an application to the virtual printer, the applica Screen at the remote computer, the shared Screen being
tion associated with the file, the Virtual printer is Simultaneously displayed by the first viewer applica
configured to create a shared document for use in a live tion and the Second viewer application during the live
data conference and the first viewer application is 40 data conference; and
configured to display the shared document on the local an input device configured to receive user input from the
computer, and local computer, the application to edit the application
a remote computer including a Second viewer application, Screen based on the user input and generate an appli
cation Screen update, the application Screen update
wherein the communication module is configured to Send 45 occasioned by the editing of the application Screen; and
the shared document to the remote computer and the a document Sharing application configured to receive the
Second viewer application is configured to display the application Screen update from the application and Send
shared document, the shared document being Simulta the application Screen update to the Virtual device, the
neously displayed by the first viewer application and Virtual device to create a shared Screen update, the first
the Second viewer application during the live data 50 viewer application to update the display of the shared
conference.
2. The apparatus of claim 1, wherein the local computer Screen with the shared Screen update,
further includes: wherein the communication module is further configured
an overlay editor configured to create a transparent win to Send the Shared Screen update to the remote Server
for distribution to the remote computer, the Second
dow appearing to be displayed over the shared docu 55 viewer application to update the display of the shared
ment and to create a user-defined object, Screen with the shared Screen update and the Shared
wherein the first viewer application is further configured Screen update, the shared Screen update being Simulta
to display the user-defined object at a user-specified neously displayed by the first viewer application and
position within the transparent window. the Second viewer application during the live data
3. The apparatus of claim 2, wherein: 60 conference.
the communication module is further configured to Send 8. The apparatus of claim 7, wherein the document loader
data representing the user-defined object and user comprises:
Specified position to the remote computer and the a Software program configured to replace the default
Second viewer application is further configured to dis device driver with a virtual device driver associated
play the Shared document including the user-defined 65 with the virtual device.
object at the user-specified position within the trans 9. The apparatus of claim 7, wherein the communication
parent window. module is further configured to Send the shared Screen to the
US 6,601,087 B1
11 12
remote server for distribution to a plurality of other remote a document loader configured to Send the application
computers, each of the plurality of other remote computers Screen to a virtual device, the virtual device to create
including a viewer application to Simultaneously display the a shared Screen for use in a live data conference, the
shared Screen or the Shared Screen update during the live first viewer application to display the shared Screen
data conference. on a first display device attached to the remote
10. An apparatus, comprising: computer,
a local computer including a first viewer application; a local computer including:
an application invoker configured to invoke an application a Second viewer application configured to display the
on the local computer, the application to generate an shared Screen on a Second display device attached to
application Screen; the local computer, the Shared Screen being Simul
a document loader configured to Send the application taneously displayed on the first display device and
Screen to a virtual device the Virtual device to create a the Second display device during the live data con
shared Screen for use in a live data conference, the first ference;
Viewer application to display the shared Screen on the an input device configured to receive user input from
local computer; 15 the local computer;
a communication module configured to Send the shared a communication module configured to Send the user
Screen to a remote Server for distribution to a remote input to a remote server for distribution to the remote
computer, the remote computer including a Second computer, where the application associated with the
Viewer application to display the shared Screen at the application Screen edits the application Screen based
remote computer, the shared Screen being Simulta on the user input to generate an application Screen
neously displayed by the first viewer application and update, the application Screen update occasioned by
the Second viewer application during the live data the editing of the application Screen, the document
conference; and loader to Send the application Screen update to the
an input device to receive user input from the remote Virtual device, the virtual device to generate a shared
25 Screen update, and
computer,
wherein the application is configured to edit the applica a document sharing application configured to receive
tion Screen based on the user input. the shared Screen update from the remote computer,
11. The apparatus of claim 10, further comprising: the shared Screen update representing only the por
a document Sharing application to receive an application tion of the application Screen that was edited,
Screen update from the application, the application wherein the first viewer application is further configured
Screen update occasioned by an editing of the applica to update the display of the shared Screen on the first
tion Screen; and display device and the Second viewer application is
a document loader to Send the application Screen update further configured to update the Second display device
to the Virtual device, the Virtual device to create a 35
using the shared Screen update, and wherein the shared
shared Screen update, the first viewer application to Screen update is simultaneously displayed on the first
update the display of the shared Screen with the shared display device and the Second display device during the
Screen update; live data conference.
wherein the communication module is further configured 16. A method for automatically sharing a file, comprising:
to Send the shared Screen update to the remote 40 printing a file, on a local computer, to a virtual printer
computer, the Second viewer application to update the from application associated with the file to create a
display of the Shared Screen with the shared Screen shared document for use in a live data conference;
update at the remote computer, the shared Screen displaying the shared document on the local computer
update being Simultaneously displayed by the first using a first viewer application;
Viewer application and the Second Viewer application 45 Sending the shared document to a remote computer; and
during the live data conference. displaying the shared document at the remote computer
12. The apparatus of claim 11, wherein the shared Screen using a Second viewer application, wherein the shared
update represents only the portion of the application Screen document is simultaneously displayed by the first
that was edited. viewer application and the Second Viewer application
13. The apparatus of claim 12, wherein the document 50 during the live data conference.
loader comprises: 17. The method of claim 16, further comprising:
a Software program configured to replace a default device creating a transparent window appearing to be displayed
driver with a virtual device driver associated with the
virtual device.
Over the shared document;
14. The apparatus of claim 10, wherein the communica 55
creating a user-defined object, and
tion module is further configured to Send the shared Screen displaying the user-defined object at a user-specified
to the remote server for distribution to a plurality of other position within the transparent window.
remote computers, each of the plurality of other remote 18. The method of claim 17, further comprising:
computers including a viewer application to Simultaneously Sending data representing the user-defined object and
display the shared Screen or the shared Screen update during 60 user-specified position to the remote computer; and
the live data conference. displaying the Shared document including the user
15. An apparatus, comprising: defined object at the user-specified position within the
a remote computer including: transparent window.
a first viewer application; 19. The method of claim 18, further comprising:
an application invoker configured to invoke an appli 65 receiving data representing a further user-defined object
cation on the remote computer, the application to and a further user-specified position from the remote
generate an application Screen; and computer, and
US 6,601,087 B1
13 14
displaying the further user-defined object at the further Sending the shared Screen update to the remote computer;
user-specified position within the transparent window, and
the transparent window appearing to be displayed over revising the display of the shared Screen with the shared
the shared document. Screen update using the Second Viewer application.
20. A method, comprising: 5 24. The method of claim 23, wherein the shared Screen
invoking an application, on a local computer to generate update represents only the portion of the application Screen
an application Screen; that was edited.
Sending the application Screen to a virtual device to create 25. The method of claim 24, wherein the step of sending
a shared Screen for use in a live data conference; the application Screen comprises:
displaying the shared document on the local computer replacing a default device driver with a virtual device
using a first viewer application; driver associated with the virtual device.
Sending the shared Screen to a remote Server for distribu 26. The method of claim 25, further comprising:
tion to a remote computer; presenting a display of the Shared Screen on a display
displaying the shared Screen at the remote computer using 15
device attached to the local computer using the first
a Second viewer application, the shared Screen being viewer application.
Simultaneously displayed by the first viewer applica 27. The method of claim 26, further comprising:
tion and the Second viewer application during the live revising the display of the shared Screen on the display
data conference; device with the shared Screen update using the first
receiving user input from the local computer; viewer application.
driving the application to edit the application Screen based 28. A method, comprising:
on the user input; presenting, on a first display device attached to a local
receiving an application Screen update from the computer, a display of a shared Screen generated at a
application, the application Screen update occasioned remote computer by Sending an application Screen to a
by the editing of the application Screen; 25 Virtual device, the remote computer Simultaneously
Sending the application Screen update to the virtual device displaying the shared Screen on a Second display device
to create a shared Screen update, attached to the remote computer;
receiving user input from the local computer;
revising the display of the shared Screen using the shared Sending the user input to a remote Server for distribution
Screen update on the first display device using the first to the remote computer, where an application associ
Viewer application; ated with the application Screen edits the application
Sending the shared Screen updated to the remote Server for Screen based on the user input;
distribution to the remote computer; and receiving a shared screen update from the remote
revising the display of the shared Screen with the shared computer, the shared Screen update occasioned by the
Screen update on the Second display device using the 35 editing of the application Screen, wherein the Shared
Second viewer application, wherein the Shared Screen Screen update represents only the portion of the appli
update is simultaneously displayed by the first viewer cation Screen that was edited; and
application and the Second viewer application during revising the display of the shared Screen using the shared
the live data conference.
Screen update on the first display device using the first
21. The method of claim 20, wherein the step of sending 40 viewer application and the Second display device using
the application Screen comprises: the Second viewer application.
replacing a default device driver with a virtual device 29. A computer program automatically sharing a file, the
driver associated with the virtual device. computer program tangibly Stored on a computer-readable
22. A method, comprising: medium, containing instructions for causing a computer to:
invoking an application on a local computer to generate 45
print a file, on the computer, to a virtual printer from an
an application Screen for use in a live data conference; application associated with the file to create a shared
Sending the application Screen to a virtual device to create document for use in a live data conference;
a shared Screen; display the shared document on the local computer using
displaying the Shared Screen on the local computer using 50
a first viewer application;
a first viewer application; Send the shared document to a remote computer; and
Sending the shared Screen to a remote Server for distribu display the shared document at the remote computer using
tion to a remote computer; a Second viewer application, wherein the Shared docu
displaying the shared Screen at the remote computer using ment is simultaneously displayed by the first viewer
a Second viewer application, the shared Screen being 55 application and the Second viewer application during
Simultaneously displayed by the first viewer applica the live data conference.
tion and the Second viewer application during the live 30. The computer program of claim 29, further including
data conference; instructions for causing the computer to:
receiving user input from the remote computer; and create a transparent window appearing to be displayed
driving the application to edit the application Screen based 60 Over the shared document;
on the user input. create a user-defined object; and
23. The method of claim 22, further comprising: display the user-defined object at a user-specified position
receiving an application Screen update from the within the transparent window.
application, the application Screen update occasioned 31. The computer program of claim 30, further including
by an editing of the application Screen; and 65 instructions for causing the computer to:
Sending the application Screen update to the virtual device Send data representing the user-defined object and user
to create a shared Screen update, Specified position to the remote computer;
US 6,601,087 B1
15 16
display the Shared document including the user-defined Simultaneously displayed by the first viewer applica
object at the user-specified position within the trans tion and the Second viewer application during the live
parent window. data conference;
32. The computer program of claim 31, further including receive user input from the remote computer; and
instructions for causing the computer to: drive the application to edit the application Screen based
receive data representing a further user-defined object and on the user input.
a further user-specified position from the remote com 36. The computer program of claim 35, further including
puter; and
display the further user-defined object at the further instructions for causing the computer to:
user-specified position within the transparent window, receive an application Screen update from the application,
the transparent window appearing to be displayed over the application Screen update occasioned by an editing
the shared document. of the application Screen; and
33. A computer program tangibly Stored on a computer Send the application Screen update to the virtual device to
readable medium, containing instructions for causing a 15
create a shared Screen update;
computer to: Send the Shared Screen update to the remote computer, and
invoke an application on the computer to generate an revise the display of the shared screen with the shared
application Screen; Screen update using the Second Viewer application.
Send the application Screen to a virtual device to create a 37. The computer program of claim 36, wherein the
shared Screen for use in a live data conference; shared Screen update represents only the portion of the
display the shared document on the local computer using application Screen that was edited.
a first viewer application; 38. The computer program of claim 37, further including
Send the shared Screen to a remote Server for distribution instructions for causing the computer to:
to a remote computer; replace a default device driver with a virtual device driver
display the shared Screen at the remote computer using a 25 asSociated with the virtual device.
Second viewer application, the Shared Screen being 39. The computer program of claim 38, further including
Simultaneously displayed by the first viewer applica instructions for causing the computer to:
tion and the Second viewer application during the live present a display of the Shared Screen on a display device
data conference; attached to the local computer using the first viewer
receive user input from the local computer; application.
drive the application to edit the application Screen based 40. The computer program of claim 39, further including
on the user input; instructions for causing the computer to:
receive an application Screen update from the application, revise the display of the shared Screen using the Shared
the application Screen update occasioned by the editing 35 Screen update on the display device using the first
of the application Screen; viewer application.
Send the application Screen update to the virtual device to 41. A computer program tangibly Stored on a computer
create a shared Screen update; readable medium, containing instructions for causing a
revise the display of the shared Screen using the shared computer to:
Screen update on the first display device using the first 40 present, on a first display device attached to the computer,
Viewer application; a display of a shared Screen generated at a remote
Send the shared Screen update to the remote Server for computer by Sending an application Screen to a virtual
distribution to the remote computer; and device, the remote computer simultaneously displaying
revise the display of the shared screen with the shared the shared Screen on a Second display device attached
Screen update on the Second display device using the 45 to the remote computer;
Second viewer application, wherein the Shared Screen receive user input from the computer;
update is simultaneously displayed by the first viewer Send the user input to a remote Server for distribution to
application and the Second viewer application during the remote computer, where an application associated
the live data conference. with the application Screen edits the application Screen
34. The computer program of claim 33, further including 50 based on the user input;
instructions for causing the computer to: receive a shared Screen update from the remote computer,
replace a default device driver with a virtual device driver the shared Screen update occasioned by the editing of
asSociated with the virtual device. the application Screen, wherein the shared Screen
35. A computer program tangibly Stored on a computer update represents only the portion of the application
readable medium, containing instructions for causing a 55
Screen that was edited; and
computer to: revise the display of the shared Screen using the Shared
invoke an application on a the computer to generate an Screen update on the first display device using the first
application Screen for use in a live data conference; viewer application and the Second display device using
Send the application Screen to a virtual device to create a 60 the Second viewer application.
shared Screen; 42. A System for Sharing a file comprising:
display the shared Screen on the local computer using a a local computer configured to create a shared document
first viewer application; that can be displayed at the local computer using a first
Send the shared Screen to a remote Server for distribution viewer application;
to a remote computer; 65 a communication module configured to Send the Shared
display the shared Screen at the remote computer using a document to a remote computer for use in a live data
Second viewer application, the Shared Screen being conference; and
US 6,601,087 B1
17 18
the remote computer having a Second viewer application a local computer configured to create an application
to display the shared document, wherein the shared Screen that can be displayed at the local computer using
document that is displayable Simultaneously displayed a first viewer application;
by the first viewer application and the Second viewer a communication module configured to Send the applica
application. tion Screen to a remote computer for use in a live data
43. The system of claim 42, wherein the shared document conference; and
the remote computer having a Second viewer application
can be send to a plurality of other remote computers, each to display the application Screen, wherein the applica
of the plurality of other remote computers including a tion Screen that is displayable simultaneously displayed
Viewer application to Simultaneously display the shared by the first viewer application and the Second viewer
document during the live data conference. 1O application.
44. A System for Sharing an application Screen compris
Ing:

You might also like