DE202011110894U1 - Serverbasierte gemeinsame Datennutzung in Computeranwendungen - Google Patents

Serverbasierte gemeinsame Datennutzung in Computeranwendungen Download PDF

Info

Publication number
DE202011110894U1
DE202011110894U1 DE202011110894.9U DE202011110894U DE202011110894U1 DE 202011110894 U1 DE202011110894 U1 DE 202011110894U1 DE 202011110894 U DE202011110894 U DE 202011110894U DE 202011110894 U1 DE202011110894 U1 DE 202011110894U1
Authority
DE
Germany
Prior art keywords
clipboard
content
computer
user
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202011110894.9U
Other languages
English (en)
Other versions
DE202011110894U8 (de
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202011110894U1 publication Critical patent/DE202011110894U1/de
Publication of DE202011110894U8 publication Critical patent/DE202011110894U8/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Document Processing Apparatus (AREA)

Abstract

Auf einem Computer implementiertes System zur gemeinsamen Nutzung von Daten zwischen Computeranwendungen auf einem gehosteten Computerdienst, worin das System Folgendes umfasst:
einen oder mehrere Web-Server, die angeordnet sind, um über das Internet mit Computergeräten zu interagieren, die sich von dem gehosteten Computerdienst entfernt befinden;
ein Anwendungs-Serveruntersystem zum Bereitstellen von Daten durch den einen oder die mehreren Web-Server zum Anzeigen von interaktiven Computeranwendungen in Containerdokumenten auf Browsern der Computergeräte;
ein Zwischenablage-Untersystem, das Inhalte speichert, die mit Benutzerkonten des gehosteten Computerdienstes korrelieren und das programmiert ist, um den Inhalt für untergeordnete Elemente innerhalb der Containerdokumente bereitzustellen, wobei der Inhalt so formatiert ist, dass dieser in den interaktiven Computeranwendungen enthalten ist.

Description

  • TECHNISCHES GEBIET
  • Dieses Dokument beschreibt Techniken und Systeme für die gemeinsame Nutzung von Daten zwischen Anwendungen in gehosteten serverbasierten Diensten.
  • HINTERGRUND
  • Gehostete Computerdienste – ebenfalls als Cloud-Computerdienste bekannt – sind Dienste, die der Öffentlichkeit über das Internet von Dritten zur Verfügung gestellt werden, wobei Anwendungen von Servern ausgeführt und die Ergebnisse dieser Ausführung Benutzern, in der Regel über Web-Browser, präsentiert werden. Gehostete Rechendienste bieten einem breiten Spektrum an Anwendern eine Vielzahl von Lösungen, wie Kartendienste, Suche im Internet, Produktivitätsanwendungen (Textverarbeitung, Tabellenkalkulation, Präsentation und E-Mail), persönliche Finanzpakete, Unternehmens-Ressourcenmanagement und viele andere Dienstleistungen. Solche Anwendungen können durch Verwendung von Techniken wie asynchrones JavaScript und XML (AJAX) bereichert werden.
  • Desktop-Betriebssysteme und entsprechende Computeranwendungen ermöglichen die lokale Speicherung und Ausführung von Anwendungen, einschließlich Produktivitätsanwendungen. Moderne Betriebssysteme erlauben im Allgemeinen „Ausschneide- und Einfügeoperationen“, sodass Daten von einem ersten Ort zu einem zweiten Ort bewegt werden können, was ebenfalls zwei verschiedene Anwendungen umfasst. In bestimmten Fällen kann die Formatierung der Daten ebenfalls durch eine Umsetzung von einer ersten Anwendung auf eine zweite Anwendung auf dem Computergerät aufrechterhalten werden. Darüber hinaus können aktive Verbindungen zwischen Instanzen von Daten in Computeranwendungen unter Verwendung von Funktionen wie die Dynamic Data Exchange (DDE) oder das Object Linking and Embedding (OLE) aufrechterhalten werden. Die gemeinsame Nutzung von Daten zwischen Anwendungen wird häufig unter Verwendung eines Zwischenablageparadigmas durchgeführt, wobei Daten von einer ersten Anwendung in eine Zwischenablage, auf die später zum Einfügen in andere Anwendungen zugegriffen werden kann, ausgeschnitten werden.
  • KURZDARSTELLUNG
  • Dieses Dokument beschreibt Techniken, mit denen Daten unter Verwendung eines Zwischenablageparadigmas gemeinsam in gehosteten Computeranwendungen genutzt werden können. Insbesondere kann ein erstes Serveruntersystem verwendet werden, um mit einem Benutzer eines Web-Browsers zusammenzuarbeiten, der ein Dokument, wie beispielsweise ein Textverarbeitungsdokument, oder eine andere Form eines Dokumentes, wie unter anderem eine Tabellenkalkulation, ein Bild oder eine elektronische Mail-Nachricht, bearbeitet. Als Teil dieser Interaktion kann der Benutzer Inhalte aus einem Dokument ausschneiden oder kopieren oder Inhalte in ein Dokument einfügen. Solche Inhalte können in eine oder von einer Zwischenablage kopiert werden, die auf dem gehosteten Computersystem gespeichert und von einem Zwischenablage-Serveruntersystem verwaltet werden. Ein solches Zwischenablage-Serveruntersystem kann mit einem untergeordneten Element eines Containerdokumentes des Web-Browsers des Benutzers interagieren. Das Containerdokument (das von einem anderen Serveruntersystem bezogen werden kann) und das untergeordnete Element oder Dokument (z. B. ein iFrame oder ein anderes Element) können mit ihren jeweiligen Serveruntersystemen und miteinander kommunizieren, sodass Zwischenablage-Elemente (wie beispielsweise einzelne Inhaltsteile, auf die getrennt von einer Zwischenablage zugegriffen werden kann) dem untergeordneten Element zur Verfügung gestellt und wiederum für das Containerdokument bereitgestellt werden können, wo diese zu dem Dokument, mit dem der Benutzer gegenwärtig interagiert, hinzugefügt werden können.
  • Eine solche gemeinsame Verwendung von Inhalten über ein serverbasiertes Zwischenablagesystem kann ebenfalls über mehrere Computersitzungen und verschiedene Computer erfolgen. Beispielsweise kann ein Benutzer Inhalte in eine Zwischenablage kopieren, die dem Online-Konto des Benutzers zugeordnet ist (z. B., indem der Benutzer sich an einem gehosteten Server anmeldet und sich selbst authentifiziert, beispielsweise über ein Kennwort und eine Benutzer-ID). Der Benutzer kann dann zu einem anderen Computer wechseln, beispielsweise von seinem Arbeitsplatz PC zu seinem Smartphone, zu seinem Heim-PC oder zu einem Internetcafe-PC und sich mit demselben Konto bei dem Dienst anmelden. Benutzer können dann den Inhalt in ein Dokument einfügen, während diese Benutzer innerhalb ihrer Konten von einem anderen Computer aus mit dem Dienst arbeiten. Als zweites Beispiel kann ein erster Benutzer einen Inhalt in eine gehostete Zwischenablage kopieren und dann Identifikatoren (z. B. E-Mail-Adressen oder einen Gruppenidentifikator) anderer Benutzer bereitstellen, mit denen dieser den Inhalt teilen möchte. Dieser andere Benutzer kann dann über das Vorhandensein des neuen Inhaltes mit einem Zeiger auf den Inhalt informiert werden (mit z. B. einer URL, die auf den bestimmten Eintrag in der Zwischenablage verweist) und kann einfach auf eine Zwischenablage zugreifen und dann den Inhalt in seinen eigenen einfügen, falls dies gewünscht wird. Als ein weiteres Beispiel kann ein Benutzer eine Anzahl verschiedener Einträge in eine gehostete Zwischenablage kopieren oder ausschneiden, und jeder Eintrag kann für eine spätere Auswahl durch den Benutzer zum individuellen Einfügen in ein anderes Dokument verfügbar gemacht werden; dem Benutzer kann ebenfalls gestattet werden, mehrere der Einträge auszuwählen und diese automatisch zu einem Dokument zusammenzufassen (z. B. zu einem Inline-Dokument, das unter dem Benutzerkonto gespeichert wird). Solche Interaktionen könnten ebenfalls erfolgen, indem mehrere Browser-Kanäle auf einmal zwischen einem Benutzercomputer und einem gehosteten System geöffnet werden, wobei der Benutzer über jeden der verschiedenen offenen Kanäle ein anderes Dokument bearbeiten und den Inhalt über das gehostete System von einem Dokument zum anderen kopieren kann.
  • In bestimmten Implementierungen können solche Techniken einen oder mehrere Vorteile bereitstellen. Beispielsweise können die in einer Cloud-basierten Zwischenablage oder in einem Cloudboard gespeicherten Daten zwischen verschiedenen Client-Geräten weitergegeben werden, unabhängig davon, ob diese Geräte mit dem Benutzer verknüpft sind, der anfänglich die Daten in dem Cloudboard oder für andere Benutzern erreichbar platziert hat. Somit können Daten leicht zwischen und unter mehreren verschiedenen Benutzern geteilt werden, wobei die entsprechenden Benutzer eine solche gemeinsame Nutzung erlaubt haben. Große Datenmengen können ebenfalls gespeichert werden, wenn ein Client-Gerät ansonsten nicht in der Lage wäre, Informationen zu speichern. Auf diese Weise können mehrere, verschieden große Datensätze als unterschiedliche Clips oder Elemente in einem Cloudboard gespeichert werden, selbst wenn es unpraktisch wäre, so viel Inhalt auf einem Client-Gerät zu verwalten. Die Daten in einer Zwischenablage können ebenfalls zwischen verschiedenen Anmeldesitzungen für ein Gerätebetriebssystem freigegeben werden, z. B., wenn ein Benutzer einen Inhalt in das Cloudboard kopiert, sein Gerät für die Nacht herunterfährt und dann die Bearbeitungsvorgänge an einem Dokument nach dem Neustart am Morgen fortsetzt. Darüber hinaus kann die gemeinsame Nutzung von Daten bei Cloud-basierten Anwendungen ebenso einfach wie bei herkömmlichen Desktop-Anwendungen und mit den hier erwähnten zusätzlichen Vorteilen bereitgestellt werden.
  • In einer Implementierung wird ein auf einem Computer implementiertes Verfahren zum Teilen von Daten zwischen Computeranwendungen offenbart. Das Verfahren umfasst das Empfangen von Befehlen, die mit einem elektronischen Dokument interagieren, das durch das Anwendungs-Serveruntersystem bereitgestellt wird, auf einem Anwendungs-Serveruntersystem eines gehosteten Computer-Serversystems und von einem ersten Computergerät, das sich von dem gehosteten Computer-Serversystem entfernt befindet. Das Verfahren umfasst ebenfalls das Empfangen eines Befehls zum Kopieren des Inhaltes des elektronischen Dokumentes in eine elektronische Zwischenablage auf dem gehosteten Computer-Serversystem und Speichern der den Inhalt darstellenden Daten auf einem Zwischenablage-Serveruntersystem des gehosteten Computer-Serversystems, das von dem Anwendungs-Serveruntersystem getrennt ist. Ferner umfasst das Verfahren das Empfangen einer Anforderung für die den Inhalt repräsentierenden gespeicherten Daten und die Übertragung der den Inhalt repräsentierenden Daten von dem Zwischenablage-Serveruntersystem an ein zweites Computergerät.
  • In einigen Aspekten unterscheidet sich das zweite Computergerät von dem ersten Computergerät. Zusätzlich kann das Verfahren ebenfalls die Ermittlung umfassen, ob das zweite Computergerät die Berechtigung besitzt, auf die den Inhalt darstellenden Daten zuzugreifen, um zu ermitteln, ob das zweite Client-Gerät für ein Benutzerkonto authentifiziert wurde, das mit einem Benutzerkonto übereinstimmt, das für das erste Client-Gerät authentifiziert wurde. Das Verfahren kann ferner die Ermittlung umfassen, ob das zweite Computergerät die Berechtigung für den Zugriff auf die den Inhalt repräsentierenden Daten besitzt, indem dieses auf ein Benutzerkonto zugreift, das für das erste Computergerät zum Speichern der Daten auf dem gehosteten Computersystem authentifiziert wurde und Lokalisierung eines Identifikators für ein Benutzerkonto, das für das zweite Computergerät authentifiziert wurde. Darüber hinaus kann das Anwendungs-Serveruntersystem mit einem Containerdokument eines auf dem ersten Computergerät ausgeführten Browsers interagieren, und das Zwischenablage-Serveruntersystem kann mit einem untergeordneten Dokument eines Containerdokumentes eines Browsers interagieren, der auf dem zweiten Computergerät ausgeführt wird, wobei das Containerdokument mit dem auf dem ersten Computergerät ausgeführten Browser korreliert.
  • Unter bestimmten Gesichtspunkten umfasst das Verfahren ferner das Empfangen eines Befehls zum Anzeigen des Inhaltes einer Zwischenablage von dem ersten Computergerät und die Übertragung der jedes Element einer Zwischenablage darstellenden Daten von dem Zwischenablage-Computeruntersystem zu dem ersten Client-Gerät, das einem Benutzerkonto entspricht, mit dem das erste Computergerät authentifiziert wurde. Das Verfahren kann ebenfalls das Empfangen eines Befehls von dem ersten Computergerät zum Einfügen des Inhaltes von dem Zwischenablage-Untersystem in ein Dokument und das Bereitstellen des Inhaltes von dem Zwischenablage-Computer-Serveruntersystem für ein sich innerhalb eines Containers befindendes untergeordnetes Element, in das der Inhalt eingefügt werden soll, umfassen. Darüber hinaus kann das Verfahren das Empfangen eines Inhaltsformatindikators von dem ersten Computergerät und die Konvertierung des Inhaltes in ein dem Inhaltsformatindikator entsprechendes Format vor dem Bereitstellen des Inhaltes für das untergeordnete Element umfassen. Unter anderen Gesichtspunkten kann das elektronische Dokument aus einer Gruppe, die aus einem Textverarbeitungsdokument, einer Tabellenkalkulation, einem Präsentationsdokument und einer E-Mail-Nachricht bestehen kann, ausgewählt werden.
  • In einer anderen Implementierung wird ein auf einem Computer implementiertes System zur gemeinsamen Nutzung von Daten zwischen Computeranwendungen auf einem gehosteten Computerdienst offenbart. Das System umfasst einen oder mehrere Web-Server, die angeordnet sind, um über das Internet mit sich von dem gehosteten Computerdienst entfernt befindenden Computergeräten und einem Anwendungs-Serveruntersystem zur Bereitstellung von Daten über den einen oder die mehreren Web-Server zum Anzeigen von Containerdokumenten in interaktiven Computeranwendungen auf Browsern der Computergeräte zu kommunizieren. Das System umfasst ferner ein Zwischenablage-Serveruntersystem, das Inhalte speichert, die mit Benutzerkonten des gehosteten Computerservice korrelieren und das programmiert ist, um den Inhalt für untergeordnete Elemente innerhalb der Containerdokumente bereitzustellen, wobei der Inhalt so formatiert ist, dass dieser mit interaktiven Computeranwendungen kompatibel ist. Das Untersystem des Anwendungsservers kann ebenfalls programmiert werden, um den Inhalt in einem im Containerdokument bearbeiteten Dokument zu speichern, nachdem der Inhalt zu dem in dem Containerdokument bearbeiteten Dokument hinzugefügt wurde. Zusätzlich kann das System ein Authentifizierungs-Serveruntersystem umfassen, das für jedes der Computergeräte bezüglich zugeordneter Benutzerkonten zum Bereitstellen eines Benutzerkontenidentifikators für das Zwischenablage-Serveruntersystem zur Ermittlung eines jedem Zwischenablageeintrag zugeordneten Benutzerkontos programmiert ist.
  • Unter einigen Gesichtspunkten ist das Untersystem des Authentifizierungsservers ferner programmiert, um mit dem Zwischenablage-Serveruntersystem zum Identifizieren von Benutzern, die sich von einem mit einer bestimmten Zwischenablage übereinstimmenden Benutzer unterscheiden, der auf ein oder mehrere Inhaltsobjekte der bestimmten Zwischenablage zugreifen kann, zusammenzuarbeiten. Zusätzlich kann die Zugänglichkeit eines Benutzers zu einem Inhaltselement in einer bestimmten Zwischenablage ermittelt werden, indem eine von einem der bestimmten Zwischenablage entsprechenden Benutzer erstellte Benutzerliste analysiert wird. Darüber hinaus kann das Anwendungs-Serveruntersystem so programmiert werden, dass es mit einem auf einem ersten Computergerät ausgeführten Containerdokument eines Browsers interagiert und das Zwischenablage-Serveruntersystem so programmiert ist, dass es mit einem untergeordneten Element eines Containerdokumentes eines auf einem zweiten Computergerät ausgeführten Browsers interagiert, wobei das Containerdokument des Browsers bei der Ausführung auf dem zweiten Computergerät mit dem auf dem ersten Computergerät ausgeführten Containerdokument des Browsers korreliert.
  • Unter noch anderen Aspekten ist das Zwischenablage-Serveruntersystem ferner so programmiert, einen Befehl von dem ersten Computergerät zur Anzeige des Inhaltes einer Zwischenablage zu empfangen und als Reaktion darauf werden die jedes Element in einer Zwischenablage repräsentierenden Daten, die einem mit dem ersten Computergerät authentifizierten Benutzerkonto entsprechen, von dem Zwischenablage-Computer-Untersystem zu dem ersten Client-Gerät übertragen. Das Zwischenablage-Serveruntersystem kann ferner so programmiert werden, dass es von dem ersten Containerdokument einen Befehl empfängt, Inhalt aus der Zwischenablage in ein Dokument innerhalb des ersten Containerdokumentes einzufügen und den Inhalt der Zwischenablage für ein untergeordnetes Element bereitzustellen, das sich innerhalb des ersten Containerdokumentes befindet. Das Zwischenablage-Serveruntersystem kann des Weiteren programmiert werden, ein Inhaltsformatindikator zu empfangen und den Inhalt in ein dem Inhaltsformatindikator entsprechendes Format zu konvertieren, bevor der Inhalt für ein untergeordnetes Element bereitgestellt wird.
  • In einer anderen Implementierung wird ein auf einem Computer implementiertes System zur gemeinsamen Nutzung von Daten zwischen Computeranwendungen auf einem gehosteten Computerdienst offenbart, das einen oder mehrere Web-Server, ein Anwendungs-Serveruntersystem und Mittel zum Empfangen des Inhaltes einer ersten, auf dem Anwendungs-Serveruntersystem ausgeführten Anwendung und Bereitstellung des empfangenen Inhaltes für eine zweite, auf dem Anwendungs-Serveruntersystem ausgeführte Anwendung umfasst.
  • Die Details einer oder mehrerer Ausführungsformen sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen, und aus den Ansprüchen ersichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Konzeptdiagramm eines gehosteten Systems, das eine Zwischenablagefunktionalität bereitstellt.
  • 2 ist ein schematisches Diagramm von Komponenten in einem gehosteten Zwischenablagesystem.
  • 3 ist ein Flussdiagramm, das ein Verfahren zur gemeinsamen Nutzung von Inhalten zwischen Anwendungen in einem gehosteten Dienst zeigt.
  • 4 ist ein Flussdiagramm, das Kopier- und Einfügeoperationen in einem gehosteten Serversystem zeigt.
  • 5A und 5B sind beispielhafte Bildschirmaufnahmen der Zwischenablageinteraktion in einem gehosteten Serversystem.
  • 6 ist ein Blockdiagramm von Computergeräten, die verwendet werden können, um die in diesem Dokument erläuterten Systeme und Verfahren zu implementieren.
  • Gleiche Bezugszeichen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Dieses Dokument beschreibt Systeme und Techniken, durch die Benutzer eines gehosteten Computerdienstes oder -systems Inhalte zwischen verschiedenen Dokumenten, einschließlich zwischen Dokumenten in zwei unterschiedlichen Arten von Computeranwendungen und zwischen verschiedenen Client-Computergeräten kopieren und einfügen oder anderweitig für andere freigeben können. Die Anwendungen können in auf Browsern präsentierten Containerdokumenten bereitgestellt werden, die auf den Client-Computergeräten eines Benutzers (z. B. PCs, Netbooks und Smartphones) unter Verwendung von Techniken wie „Asynchronous JavaScript and XML“ (AJAX) in bekannter Art ausgeführt werden. Solche Dienste können von Anwendungsservern im gehosteten Dienst verwaltet werden. Der zwischen Dokumenten bzw. Anwendungen verschobene Inhalt kann von den Zwischenablageservern des Dienstes, die von Anwendungsservern getrennt sind, verwaltet werden. Die Zwischenablageserver können mit einem in dem Containerdokument enthaltenen untergeordneten Element kommunizieren. Das Containerdokument und das untergeordnete Element können jeweils durch das separate Ausführen von JavaScript oder ähnlichem Code ausgeführt werden, und das untergeordnete Element kann mit dem Containerdokument kommunizieren, um Informationen über Elemente in einer Zwischenablage anzuzeigen, auf die durch die das Containerdokument ausführende Anwendung über den Dienst zugegriffen werden kann. In ähnlicher Weise kann der Inhalt aus dem Containerdokument an das Zwischenablageelement auf dem Client übergeben und wiederum den Zwischenablageservern zur Verfügung gestellt und dort gespeichert werden, bis es von einem anderen autorisierten Benutzer angefordert wird (einschließlich des Benutzers, der den Inhalt in der Zwischenablage platziert hat).
  • In bestimmten Implementierungen kann eine solche Kopierfunktionalität des Inhaltes in Kombination mit einer beispielsweise von einem Betriebssystem des Gerätes verwalteten Zwischenablage auf einem Client-Gerät bereitgestellt werden. Nach herkömmlichen Benutzerschnittstellenmechanismen kann das Drücken der Tasten STRG + C auf einer Tastatur zum Kopieren ausgewählter Inhalte in eine lokale Zwischenablage führen, während eine andere Auswahl (z. B. eine Menüauswahl in einer in einem Browser ausgeführten Anwendung) zu einem Kopieren des Inhaltes in ein Cloudboard führen kann. Ein System könnte ebenfalls angeordnet sein, um einen solchen Kopierbefehl handzuhaben, um das Kopieren sowohl in die lokale Zwischenablage als auch in das Cloudboard auszuführen. Alternativ kann ein Aufruf eines Kopierbefehls zu einer Anzeige eines Menüs führen, aus dem der Benutzer manuell auswählen kann, in welche der beiden Zwischenablagen (d. h., die lokale Zwischenablage oder das Cloudboard) die Daten kopiert werden sollen (oder bei Wahl eines Einfügebefehls von wo).
  • 1 ist ein Konzeptdiagramm eines gehosteten Systems 100, das eine gehostete Zwischenablagefunktionalität bereitstellt. Das System 100 ist hier mit zwei Textverarbeitungsdokumenten 102, 104 dargestellt, die einen gemeinsamen Inhalt in Form eines Bildes 108 über das Internet 106 und unter Verwendung eines gehosteten Serversystems 110 teilen. Der Inhalt in diesem Beispiel wurde von einem mit dem Dokument 102 arbeitendem Benutzer durch Auswahl des Bildes 108 und einer anschließenden Auswahl von Steuerelementen auf dem Bildschirm geteilt, um das Bild 108 in eine Systemzwischenablage zu kopieren. Über die Zwischenablage des gehosteten Systems wurde dann auf den Inhalt zugegriffen, beispielsweise von einem mit dem Dokument 104 arbeitendem Benutzer, indem der Benutzer einen Zwischenablagebefehl aus einem Bildschirmmenü auswählt und dann das bestimmte Bild 108 aus einer Liste von mehreren, dem Benutzer angezeigten Elementen auswählt.
  • In diesem Beispiel können die Dokumente 102 in Web-basierten Containerdokumenten im Präsentationsfenster eines Web-Browsers angezeigt werden. Die Containerdokumente können zu anfangs bei der Ausführung einer Web-basierten Anwendung durch den Benutzer, wie beispielsweise einer Cloud-basierenden Textverarbeitung, geladen werden. Javascript oder ein ähnlicher Code kann von einem durch den Browser des Benutzers geladenen Mark-up-Code aufgerufen werden, um die Anzeige der Anwendung in dem Browser des Benutzers in Zusammenarbeit mit Web-Servern und Anwendungsservern des gehosteten Serversystems 110 zu bewirken. Zusätzlicher Code kann geladen und ausgeführt worden sein oder ausgeführt werden, um die gehostete Zwischenablagefunktionalität für den Benutzer bereitzustellen. Ein solcher zusätzlicher Code kann nicht mit den Anwendungsservern, sondern mit von dem gehosteten Serversystem 110 gehosteten Zwischenablageservern kommunizieren. Die Zwischenablageserver können allgemein anwendungsunabhängig sein, indem diese Inhalte von einer Vielzahl verschiedener Anwendungen (z. B. Textverarbeitung, Tabellenkalkulation usw.) empfangen und Inhalte für diese bereitstellen sowie Inhalte ebenfalls bei Bedarf bei einer Verschiebung zwischen zwei verschiedenen Anwendungen konvertieren können.
  • Ein mit dem Dokument 104 interagierender Benutzer kann das System 100 in einer ähnlichen Weise, wie ein auf das Dokument 102 zugreifender Benutzer, verwenden. Obwohl hier auf Dokumente auf verschiedenen Computern verschiedener Benutzer, die sich bei dem gehosteten Serversystem 110 angemeldet haben, zugegriffen werden kann, können dieselben Benutzer auf beide Dokumente, entweder zu unterschiedlichen Zeitpunkten oder in verschiedenen Sitzungen (entweder zu unterschiedlichen Zeiten oder gleichzeitig), über verschiedene Browser-Kanäle oder von verschiedenen Client-Geräten aus zugreifen. Die Koordination zwischen derartigen unterschiedlichen Zugriffsarten für einen Benutzer kann unter Verwendung von Anmeldeinformationen (z. B. Benutzer-ID und Passwort) koordiniert werden, die der Benutzer bei der Anmeldung am gehosteten Computersystem bereitstellt. Derartige Anmeldeinformationen können über ein Benutzerberechtigungs- oder Authentifizierungs-Untersystem verwaltet werden (nicht gezeigt), und die hierin erläuterten Untersysteme können Benutzer-ID-Informationen von Client-Geräten empfangen, diese dem Benutzerberechtigungs-Untersystem zur Verfügung stellen und mitteilen, ob der Benutzer (oder das Client-Gerät) einem bestimmten Benutzerkonto entspricht, sodass das System 100 dem Client-Gerät Inhalte nach einer Anforderung zur Verfügung stellen kann. Eine derartige Nachverfolgung von Vorrichtungen bezüglich eines Benutzerkontos und die Genehmigung von Vorrichtungen zum Empfangen von Informationen, die an das Benutzerkonto gebunden sind, können auf verschiedene Weisen erfolgen und sind in der Technik gut bekannt.
  • In der Figur ist das gehostete Computersystem 110 zur Speicherung von fünf Elementen, einschließlich des Bildes 108, dargestellt. Beispielsweise repräsentiert ein erstes und ein viertes Element Inhalt, der aus Kalkulationstabellen in einer Tabellenkalkulationsanwendung kopiert wird (wie durch die als Gitter dargestellten Elemente gezeigt wird). Ein zweites und fünftes Element stellen Textverarbeitungsinhalte dar, wobei das zweite Element einfach Text aus einem Dokument enthält und das fünfte Element Text und ein Bild darstellt.
  • Die einzelnen Elemente können getrennt voneinander gespeichert und über die Zwischenablage unter Verwendung eindeutiger Element-IDs abgerufen werden. Beispielsweise können Zwischenablageserver separat Listen von sich derzeit in der Zwischenablage jedes Benutzers befindenden Element-IDs pflegen, sodass, wenn ein Benutzer (z. B. durch eine Menüauswahl) eine Liste von Elementnamen (und möglicherweise assoziierten Metadaten) des Inhaltes in der Zwischenablage abruft, können die Zwischenablageserver zuerst auf die Benutzerliste mit der Benutzer-ID zugreifen und dann auf die Namen der einzelnen Elemente in der Benutzerliste.
  • Jedem Element kann ebenfalls eine Liste von Benutzern oder insbesondere Benutzerkonten zugeordnet sein, die berechtigt sind, auf das Element zuzugreifen, indem dieses in ein Dokument eingefügt wird. Beispielsweise kann der Benutzer, der anfänglich das Objekt zu einer Zwischenablage hinzugefügt hat, einzelne Personen (z. B. nach E-Mail-Adressen, andere Benutzer-IDs oder andere derartige Mechanismen), nach Gruppen (beispielsweise alle Mitglieder in der Kontaktliste des Benutzers oder alle solche Benutzer, die als „Familie“ oder „Mitarbeiter“ oder dergleichen gekennzeichnet sind), alle Benutzer einer bestimmten Domäne (z. B. eine weitere schnelle Möglichkeit, um Mitarbeiter in einer Unternehmensumgebung zu identifizieren) oder alle Benutzer (z. B. durch Angabe, dass das Element öffentlich zugänglich zu machen sei) identifizieren. Werden andere Benutzer für eine Zwischenablage identifiziert, können diese über eine Benachrichtigung (z. B. über eine E-Mail-Nachricht) informiert werden, dass das Element in ihrer Zwischenablage verfügbar ist (z. B. über eine Zwischenablage-Menüauswahl, wenn diese im System 110 angemeldet sind) und diesen kann bei einem Zugriff auf ein Zwischenablagemenü ein Name des Elementes angezeigt werden, wenn diese mit einer vom System 110 bereitgestellten Anwendung interagieren.
  • Somit kann/können unter Verwendung des Systems 100 ein oder mehrere Benutzer bequem Inhalte aus einem Dokument einer ersten Anwendung oder einer ersten Instanz einer Anwendung nehmen und diese einfach über die Cloud mit einer anderen Anwendung, einer anderen Instanz derselben Anwendung oder mit anderen Benutzern gemeinsam nutzen. Eine solche gemeinsame Nutzung kann über eine Browser-basierte Anwendung erfolgen, die auf dem ersten Gerät ausgeführt wird und den Inhalt erfasst sowie an das gehostete Computersystem 110 weiterleitet, und dann eine Browser-basierte Anwendung auf dem zweiten Gerät eine Darstellung aller Elemente in der relevanten Zwischenablage anfordert (mehrere Benutzer können außerdem mit einem Zugriff auf eine bestimmte Zwischenablage versehen sein), und die geteilte Zwischenablage kann eine Teilmenge der Zwischenablage eines bestimmten Benutzers oder eine allgemeine Kombination der Zwischenablagen von Einzelpersonen sein (z. B. alle Elemente der Zwischenablage des bestimmten Benutzers und alle Elemente, die andere Benutzer in ihren Zwischenablagen zur gemeinsamen Nutzung mit dem bestimmten Benutzer freigegeben haben) und eine anschließende Anforderung eines der Elemente, um dieses an eine auf dem zweiten Gerät ausgeführte Anwendung zu senden, beispielsweise innerhalb eines Containerdokumentes, in das der Inhalt platziert wird. Der Inhalt kann seine verschiedenen Formatierungen und andere Metadaten beibehalten, während dieser kopiert wird, oder Benutzer können ein Einfügen des Inhaltes ohne Verwendung der Formatierung wählen, genau wie dies für die Desktop-basierten Zwischenablagen erfolgen kann.
  • 2 ist ein schematisches Diagramm von Komponenten in einem gehosteten Zwischenablagesystem 200. Im Allgemeinen verwendet das System ein zweiteiliges Serversystem (das Teil eines Hosting-Systems 210 ist), um mit einem zweiteiligen Client-System (auf einem Client-Gerät 202) zu kommunizieren, dessen Komponenten zu einem großen Teil die Hauptkomponenten im Serversystem spiegeln. Jede der zwei Hauptkomponenten auf der Serverseite kann direkt mit einem entsprechenden einen Paar der Komponenten auf der Client-Seite kommunizieren. Im Gegenzug kann jede der serverseitigen Komponenten mit einer anderen kommunizieren und jede der Client-seitigen Komponenten kann miteinander kommunizieren.
  • Insbesondere kommuniziert in diesem Beispiel ein Anwendungs-Serveruntersystem 212 mit dem Anwendungs-JavaScript oder einem ähnlichen ausführbaren Code, der auf einem Web-Browser auf einem Client-Gerät 202 ausgeführt wird. Das Anwendungs-Serveruntersystem 212 ist dafür verantwortlich, Informationen zur Präsentation einer Anwendung (z. B. ein Textverarbeitungs- oder Tabellenkalkulationsprogramm) bereitzustellen, mit dem ein Benutzer vollständig mit einem Dokument, wie beispielsweise einem Tabellenkalkulations- oder Textverarbeitungsdokument, interagieren kann. Eine solche Interaktion umfassen das Hinzufügen typisierter Informationen und Bilder, Formatierungen (z. B. Ändern von Schriftarten, Schriftgrößen, Unterstreichungen, Kursivschrift und dergleichen), Ausrichtung, Seitenformatierung und andere typische Operationen für die spezielle Art der Anwendung durch den Benutzer. Das Serveruntersystem 212 kann beispielsweise einen Mark-up-Code (z. B. HTML und XML) über einen Anwendungs-AJAX-Kanal 216 bereitstellen, der dazu führen kann, dass JavaScript-Code für das Client-Gerät 202 zur Ausführung bereitgestellt wird, was wiederum eine weitere Interaktion des Client-Gerätes 202 mit dem Untersystem 212 auslöst, um ein Modell eines von einem Benutzer des Client-Gerätes 202 bearbeiteten Dokumentes zu aktualisieren (z. B. Senden von Aktualisierungen zum Untersystem 212 mit im Wesentlichen jedem Tastenanschlag des Benutzers in einem Dokument oder als Reaktion auf Menüauswahlen durch den Benutzer). Solche eine Kommunikation kann ebenso wie jede andere Kommunikation zwischen dem Client-Gerät 202 und dem Hosting-System 210 über lange Distanzen in einem Netzwerk, was Teile des Internets enthalten kann, erfolgen.
  • Andere Komponenten werden verwendet, um das Übertragen von Zwischenablage-Daten von einem Ort zu einem anderen auf das Client-Gerät 202 oder mehrere unterschiedliche Client-Geräte durch das Hosting-System 210 in einem „Ausschneiden und Einfügen“-Benutzeroberflächenparadigma zu ermöglichen. Insbesondere interagiert ein Zwischenablage-Serveruntersystem 214 mit einer Zwischenablage-Javascript-Bibliothek 206 auf dem Client durch einen Zustandsaktualisierungskanal 218, empfängt Inhalt von den Dokumenten, an denen Benutzer arbeiten, und stellt diese Informationen wieder für dieselben oder verschiedene Dokumente in einer vertrauten Ausschneiden/Kopieren-und-Einfügen-Benutzerinteraktion mittels der Zwischenablage zur Verfügung (über den gleichen Kanal). In diesem Beispiel befindet sich der Master-Zustand für Dokumente und Zwischenablage-Elemente auf dem Hosting-Serversystem 210.
  • Die Untersysteme 212, 214 auf dem Host-System 210 können miteinander kommunizieren, wie ggf. etwa über Fernprozeduraufrufe (RPCs), um die gemeinsame Nutzung von Informationen zu koordinieren und um die Sicherheit und Authentifizierung für den Empfang von Informationen aufrechtzuerhalten. Wählt beispielsweise ein Benutzer ein in ein Dokument einzufügendes Element aus, kann der Zwischenablageserver 214 die Daten für dieses Element an den Anwendungsserver 212 senden, der seinerseits das Element in das Dokument einfügen kann. (Der Anwendungsserver 212 kann den Ort, an dem das Element hinzugefügt werden soll, durch Speicherung eines Zustands des Dokumentmodells durch Verfolgen von Tastenanschlägen und andere Eingaben des Benutzers über den Anwendungs-JavaScript 204 erkennen. Ähnlich kann der Zwischenablageserver 214 Text von einem Dokument erhalten, indem er diesen durch einen RPC von dem Anwendungsserver 212 erhält.
  • Ebenso können die Komponenten auf dem Client-Gerät 202 (z. B. der Anwendungs-JavaScript 204 zum Ausführen einer Anwendung in einem Containerdokument und ein Zwischenablage-Code in einem untergeordneten Dokument des Containerdokumentes) miteinander kommunizieren, um beispielsweise den aus einem den Anwendungs-JavaScript 204 ausführenden Containerdokument zu kopierenden Inhalt zum Zwischenablage-JavaScript zu senden, der wiederum den Inhalt an den Zwischenablageserver 214 weiterleiten kann. Der spezielle Mechanismus zum Verschieben von Inhalt zwischen und unter den Hauptkomponenten und der Pfad für ein solches Verschieben durch die Komponenten kann durch die spezielle Umgebung, in der das System 200 implementiert werden soll, diktiert werden. Besondere Interaktionen zwischen den Komponenten des Client-Gerätes 202 kann die Kommunikation des Anwendungs-JavaScripts 204 enthalten, die anzeigen, dass ein Benutzer einen für eine gehostete Zwischenablage relevanten Befehl aufruft, beispielsweise durch Auswählen eines Einfügebefehls. In einer solchen Implementierung kann der Anwendungs-JavaScript 204 mit der Zwischenablage-Bibliothek 206 kommunizieren, um Schnappschüsse von jedem der Elemente in der relevanten Zwischenablage des Benutzers von dem Zwischenablageserver 214, der diese Information für das gehostete System 210 verwaltet, zu erhalten.
  • Die Art und Weise, in der ein aktueller Zustand einer gehosteten Zwischenablage in dem System 200 aktualisiert werden kann, kann zumindest als ein periodischer Vorgang und als ein Vorgang auf Anfrage erfolgen. Bei einem periodischen Vorgang kann der Client-Zwischenablage-JavaScript Informationen anfordern oder der Zwischenablageserver 214 kann diese aussenden, die angeben, dass seit der vorhergehenden Aktualisierungsperiode Änderungen an Elementen in einer gehosteten Zwischenablage erfolgt sind. Eine solche Aktualisierung kann durch Messen der abgelaufenen Zeit seit einer vorherigen Aktualisierung, nachdem eine bestimmte Anzahl von Änderungen erfolgt sind oder jedes Mal, nachdem eine Änderung an der betreffenden Zwischenablage vorgenommen wurde, durchgeführt werden. Bei einem Vorgang auf Anfrage werden Elemente des Zwischenablageservers 214 bei einer Benutzerauswahl aktualisiert, um diese Elemente zu sehen und um darauf zuzugreifen. Beispielsweise kann eine Benutzerauswahl eines Einfügebefehls die Anzeige einer Liste von Elementen aufrufen und somit kann wiederum eine Anforderung von dem Client-Gerät 202 an den Zwischenablageserver zur Bereitstellung einer aktuellsten Version dieser Elemente ausgelöst werden. Während der Erfassung dieser Informationen kann ein Symbol in einem Auswahlmenü angezeigt werden, um zu kennzeichnen, dass bestimmte andere Elemente in Kürze verfügbar sein und augenblicklich verarbeitet werden.
  • 3 ist ein Flussdiagramm, das ein Verfahren zur gemeinsamen Nutzung von Inhalten zwischen Anwendungen in einem gehosteten Dienst zeigt. Im Allgemeinen beschreibt dieses Verfahren Aktionen, die ein gehostetes Serversystem bei Interaktionen mit einem entfernten Computerbenutzer, der verschiedene Dokumente bearbeitet und die Inhalte zwischen den Dokumenten freigeben möchten, ausführen kann. Eine solche gemeinsame Nutzung kann durch das Serversystem und zwischen zwei verschiedenen Sitzungen auf demselben Gerät (z. B. durch ein Ausschalten und Wiedereinschalten eines Gerätes), zwischen verschiedenen Sitzungen auf verschiedenen Geräten für ein einzelnes angemeldetes Benutzerkonto oder sogar zwischen verschiedenen Konten auf verschiedenen Geräten erfolgen.
  • Das beispielhafte Verfahren beginnt bei Kasten 302, bei dem ein Anwendungs-Serveruntersystem mit einem Client-Computergerät betreffend der von einem Benutzer des Gerätes an einem Dokument, wie beispielsweise ein Textverarbeitungsdokument, durchgeführten Änderungen interagiert. Eine solche Interaktion kann auf übliche Weise erfolgen, beispielsweise durch Bereitstellen einer grafischen Benutzeroberfläche und durch das Dokument selbst mittels eines JavaScripts, der in einem Containerdokument auf einem Web-Browser ausgeführt wird, wobei der JavaScript ein Anwendungs-Serveruntersystem anspricht. In bestimmten Implementierungen kann jede Benutzerinteraktion, die ein Modell für das Dokument ändert (z. B. Hinzufügen, Löschen oder Formatieren von Zeichen), im Wesentlichen sofort in einer Master-Kopie des Dokumentmodells auf dem Serversystem reflektiert werden.
  • Bei Kasten 304 wird eine für eine Zwischenablage relevante Operation des Benutzers, wie beispielsweise ein Ausschneide- oder Einfügebefehl, von dem Benutzer des Gerätes empfangen. Eine solche Auswahl kann über eine vertraute Tastaturkombination (z. B. STRG-C für Kopieren) oder durch Auswahl eines Symbols oder eines anderen wählbaren Steuerelementes in einem Menü der Anwendung durch einen Benutzer erfolgen. Der Benutzer kann dann eine Kopieren/Ausschneide- oder Einfügeoperation aus dem Menü auswählen.
  • Beim Generieren des Menüs kann der Prozess mit einem Zwischenablage-Serveruntersystem interagieren. Beispielsweise kann die Auswahl des Menüs einen im Containerdokument ausgeführten JavaScript-Code auslösen, der Identifikationsinformationen über den Benutzer des Gerätes an ein Zwischenablage-Serversystem sendet sowie eine Angabe, dass der Code im Gegenzug eine Liste der Elemente, die sich derzeit in der Zwischenablage des Benutzers (entweder persönliche oder gemeinsam genutzte Elemente anderer Benutzer oder eine Kombination von beiden) befinden, erhalten möchte. Das Serveruntersystem kann derartige Informationen bereitstellen und der JavaScript-Code kann die Daten an den Anwendungs-JavaScript-Code senden, sodass die Informationen in einem erweiterten Abschnitt eines Menüs der Anwendung angezeigt werden. Solche Informationen können ebenfalls Vorschauinformationen für den Inhalt jedes Zwischenablageelementes enthalten, sodass ein Benutzer eine Vorschau des Inhaltes bei Aufruf der Menüauswahl sehen kann.
  • Bei Kasten 308 wählt der Benutzer eine Auswahl aus dem Menü (oder führt eine Tastenkombination aus), um zu kennzeichnen, dass dieser einen in der gehosteten Zwischenablage verfügbaren ausgewählten Inhalt empfangen möchte. Eine solche Auswahl kann dazu führen, dass das Zwischenablage-Serveruntersystem den Inhalt an den entsprechenden Zwischenablage-JavaScript des Gerätes sendet, und der Zwischenablage-JavaScript wiederum kann den Inhalt zum Einfügen in das Dokument an den Anwendungs-JavaScript übergeben. Alternativ könnte das Zwischenablage-Untersystem den Inhalt an das Anwendungs-Untersystem übergeben, das wiederum den Inhalt zu dem Dokument hinzufügt oder den Inhalt an den Anwendungs-JavaScript übergibt, der den Inhalt zu dem Dokument hinzufügt und sich dann mit dem Anwendungs-Untersystem synchronisiert, um das Dokument wieder in der Cloud zu speichern.
  • Bei Kasten 310 interagiert der Benutzer weiterhin unter Verwendung des Anwendungs-Untersystems mit dem Dokument. So kann der Benutzer beispielsweise den gerade in das Dokument eingefügten Inhalt neu formatieren. An dieser Stelle wird der Inhalt Teil des Dokumentmodells, das sowohl auf dem Client-Untersystem als auch auf dem Serveruntersystem gespeichert und häufig zwischen diesen Geräten koordiniert werden kann (beispielsweise jedes Mal für jedes vom Benutzer eingegebene Zeichen). Solche Inhalte können nach dem Hinzufügen zu dem Dokument ihre Verbindung zu dem Ursprungsdokument oder zur Zwischenablage verlieren. In anderen Fällen kann eine Verbindung zwischen dem Ursprungsdokument und dem Zieldokument aufrechterhalten werden, sodass beispielsweise bei einer Änderung des Inhaltes des Ursprungsdokumentes sich der entsprechende Inhalt im Ziel automatisch mit ändert, oder einem Benutzer des Ziels kann das Vorliegen einer Änderung des Inhaltes des Ursprungsdokumentes mitgeteilt werden. Außerdem kann, wie erwähnt, der Benutzer das aktualisierte Zieldokument zu einem gewissen Zeitpunkt speichern, und das Dokument kann automatisch über das Anwendungs-Serveruntersystem auf dem gehosteten oder dem Serversystem gespeichert werden. Auf diese Weise kann der Inhalt eines Dokumentes bequem mit einem anderen geteilt werden, und zwar unabhängig davon, ob beide Dokumente Teile des gleichen Gerätes, Teile einer einzigen Sitzung oder Teile verschiedener Geräte und zu sehr unterschiedlichen Zeiten sind.
  • 4 ist ein Flussdiagramm, das Kopier- und Einfügeoperationen in einem gehosteten Serversystem zeigt. Das Verfahren ist ähnlich dem, das mit Bezug auf 3 erläutert wurde, zeigt jedoch bei einer Implementierung bestimmte Funktionen bereitstellende beispielhafte Komponenten. Diese Komponenten umfassen separate Anwendungs- und Zwischenablage-Codes (z. B. JavaScript), die auf einem Client-Gerät (die dem Anwendungs-JavaScript 204 und der Zwischenablage-JavaScript-Bibliothek 206 in 2 entsprechen können) und getrennten Anwendungsserver- und Zwischenablage-Serveruntersystemen (die dem Anwendungsserver 212 und dem Zwischenablageserver 214 in 2 entsprechen können) ausgeführt werden.
  • Das Verfahren beginnt bei Kasten 402, wo ein Benutzer eine Anwendung zur Ausführung in seinem Web-Browser öffnet. Eine solche Auswahl bewirkt, dass das Gerät des Benutzers eine Anforderung (wie beispielsweise eine HTTP-Anforderung) an einen gehosteten Dienst, der den Anwendungsserver hostet, sendet. Mark-up-Code, einschließlich Aufrufe von bestimmtem, anwendungsbezogenem JavaScript, können für den Client bereitgestellt werden. Der Code kann auf dem Client ausgeführt werden und die resultierende Anwendungsseite kann in dem Browser-Fenster angezeigt werden (Kasten 406). Eine solche Ausführung des Codes kann das Aufrufen und Ausführen von Code für die Anwendung selbst und für eine in der Anwendung bereitgestellte Zwischenablage umfassen (obwohl die Ausführung einiger oder aller Zwischenablagecodes verzögert sein kann, bis ein Benutzer die Zwischenablagefunktionalität aufruft). Der Benutzer kann dann mit der Anwendung interagieren, und Daten können zwischen dem Anwendungscode der Anwendungsserver, beispielsweise unter Verwendung bekannter AJAX-Techniken, gesendet werden.
  • Bei Kasten 408 umfasst die Interaktion des Benutzers mit der Anwendung den Empfang eines Einfügebefehls 408 des Benutzers durch die Anwendung. Eine solche Auswahl kann dazu führen, dass der Anwendungscode (in diesem Beispiel) oder der Zwischenablagecode (in anderen Beispielen) Informationen über eine Zwischenablage, die dem Benutzerkonto entspricht, anfordert. Die vom Client-Gerät an den Anwendungsserver gesendete Anforderung kann an den Zwischenablageserver weitergeleitet werden (Kasten 410). Der Zwischenablageserver kann dann auf die Anforderung antworten, beispielsweise durch das Bereitstellen von Daten, um eine Liste von sich derzeit in der Zwischenablage (Kasten 412) befindenden Elementen in der Anwendung anzuzeigen. Diese Daten können an den Client (in diesem Beispiel direkt an den Anwendungscode, in anderen Beispielen an Zwischenablagecode und dann an den Anwendungscode) zurückgesendet werden. Eine solche Liste von Elementen kann dem Benutzer als eine Darstellung ihrer Zwischenablage (Kasten 414) angezeigt werden.
  • Nachdem der Benutzer die Optionen in seiner Zwischenablage in Erwägung gezogen hat (die einen auswählbaren Indikator für jedes Element enthalten können, der in die Zwischenablage kopiert wurde und der dem Benutzer zum Einfügen zur Verfügung steht), kann dieser eine der Optionen auswählen – hier eine Auswahl eines Elementes in der Zwischenablage, das der Benutzer in ein in der gehosteten Anwendung (Kasten 416) aktives Dokument einfügen möchte. In diesem Beispiel wird die Auswahl an den Zwischenablageserver anstelle des Anwendungsservers gesendet, da der Zwischenablageserver mit der Bereitstellung der Informationen an das Client-Gerät beauftragt wird. Die Auswahl kann eine Anforderung (z. B. eine zu sendende HTTP-Anforderung) auslösen, die eine Kennung für das bestimmte Zwischenablageelement und eine das Format (wie beispielsweise einen MIME-Typ) identifizierende Kennung (z. B. eine Ganzzahl) enthält, in dem der Inhalt der aktiven Anwendung zur Verfügung gestellt wird. Die Auswahl kann ebenfalls dem Anwendungsserver (Kasten 417) mitgeteilt werden, der diese wiederum dem Zwischenablageserver zur Verfügung stellen kann.
  • Die Zwischenablage kann dann den Inhalt des ausgewählten Elementes für die Anwendung (Kasten 418) bereitstellen. Einem solchen Vorgang kann eine Modifizierung der Formatierung des Inhaltes vorausgehen. Eine solche Modifizierung kann durch Untersuchung der Abbildungsdaten erfolgen, die die Regeln zum Konvertieren eines Inhaltes in einem ersten Format in den Inhalt in einem zweiten Format (das vom Benutzer ausgewählte Format oder ein Format, das dem in der Anwendung bearbeiteten aktiven Dokument inhärent ist) definieren.
  • In bestimmten Implementierungen kann der Inhalt für den auf dem Client ausgeführten Zwischenablagecode (Kasten 419) oder für den Anwendungscode bereitgestellt werden, der dann den Inhalt in das aktive, gerade editierte Dokument einfügt (Kasten 420). Später kann ein Benutzer anderen Inhalt hervorheben und einen Kopierbefehl aus einem Menü oder über eine Tastaturkombination auswählen (Kasten 422). Der ausgewählte Inhalt kann dann automatisch an den Zwischenablagecode (Kasten 424) übergeben und an den Zwischenablageserver (Kasten 424) weitergeleitet werden, der die Daten verarbeiten und den Inhalt zur Zwischenablage hinzufügen kann. Beispielsweise kann der Zwischenablageserver eine Kennzeichnung für den Inhalt, einen Anwendungstyp, von dem der Inhalt kam (z. B. um ein Symbol anzeigen zu können, wenn das Element in einem zukünftigen Menü angezeigt wird) und andere Metadaten für den Inhalt (z. B., dass es ein X eines Y-Teils eines Tabellenkalkulationsblattes ist) bestimmen.
  • Der Prozess kann dann fortgesetzt werden, da ein Benutzer wählt, andere Inhalte aus einer Anwendung zu entnehmen und diese in seine Zwischenablage legen oder um Inhalte aus der Zwischenablage zu kopieren und diese in eine ausgeführte Anwendung einzufügen. Eine solche Interaktion kann über mehrere Sitzungen, mehrere verschiedene Computer und Computerarten (z. B. Desktop, Laptop, Smartphone usw.) und über verschiedene Benutzer hinweg stattfinden, wenn ein veröffentlichender Benutzer angegeben hat, dass neu zu einer Zwischenablage hinzugefügte Inhalte für andere Benutzer freigegeben werden sollen.
  • 5A und 5B sind beispielhafte Bildschirmaufnahmen der Zwischenablageinteraktion in einem gehosteten Serversystem. 5A zeigt ein Beispiel eines Kopiervorgangs aus einem Tabellenkalkulationsdokument, während 5B ein Beispiel eines Einfügebefehls in einem Textverarbeitungsdokument zeigt.
  • In 5A hat ein Benutzer eine einfache zweispaltige Tabellenkalkulation erstellt und vier Zeilen in der Tabellenkalkulation – die Kopfzeile und drei Datenzeilen – hervorgehoben. Der Benutzer hat ebenfalls ein Zwischenablage-Steuerelement in einem oberen Menü der Tabellenkalkulation ausgewählt, das in einem Präsentationsfenster eines Web-Browsers dargestellt werden kann. Das Symbol zeigt einen in einer Cloud eine Zwischenablage darstellenden Ordner, wobei die Zwischenablage von einem gehosteten Computerdienst (einem Cloudboard) bereitgestellt wird. Es wird ein aus der Auswahl des Benutzers hervorgehendes Pulldown-Menü angezeigt, und dem Benutzer werden vier Optionen zur Auswahl angeboten. Die oberste Auswahl ist eine Auswahl zum Kopieren des ausgewählten Zellenbereiches aus der vom Benutzer gerade bearbeiteten Tabellenkalkulation. Ein solcher Kontext ergibt sich durch die Kennzeichnung der Auswahl: „Zellenbereich kopieren (4 Zeilen × 2 Spalten)“ Eine derartige Auswahl durch den Benutzer wird bewirken, dass ein Eintrag für diese Auswahl bei dem nachfolgenden Zugriff des Benutzers auf die Zwischenablage erscheint und der Inhalt aus der Tabellenkalkulation in den Zwischenablageabschnitt des Dienstsystems kopiert wird, das die Anwendung und die Zwischenablagefunktionalität bereitstellt, zusammen mit der Formatierung, um anzuzeigen, dass die Überschriften in einer fetten Schriftart sein werden und dass alle Zellen mittig in einer bestimmten Schriftart und einer bestimmten Schriftgröße ausgerichtet sind. Formeln können ebenfalls in ihrer Grundform kopiert werden, wo diese in der Tabellenkalkulation vorhanden sind.
  • Die verbleibenden vier Auswahlen repräsentieren Inhalte, die bereits für die Zwischenablage des Benutzers bereitgestellt wurden und zum Einfügen in das Tabellenkalkulationsblatt durch den Benutzer verfügbar sind. Der Client-Code oder Servercode der Zwischenablage kann zuvor die Inhaltsarten festgelegt haben, die zu einer Tabellenkalkulation hinzugefügt werden können und möglicherweise nicht kompatible Elemente in der Zwischenablage des Benutzers herausgefiltert haben. In diesem Beispiel sind die zum Einfügen in die Tabellenkalkulation verfügbaren Elemente der Text „Der schnelle braune Fuchs“ oder Text, der mit dieser Folge beginnt. Ein Bild (wobei in einigen Beispielen das Symbol neben der Kennzeichnung eine Miniaturansicht des tatsächlichen Bildes sein kann, das von einem Zwischenablage-Serveruntersystem erzeugt und bereitgestellt wird, eine 2 × 3-Tabelle, die anscheinend ursprünglich aus einem Textverarbeitungsdokument stammt, und ein 2 × 2-Zellenbereich, der mit einem Zelleneintrag „21.1.2009“ beginnt. Die Beschreibungen der verschiedenen Elemente können von den hier gezeigten abweichen, können jedoch im Allgemeinen so gewählt werden, dass diese einen wesentlichen Hinweis auf den Charakter des Inhaltes liefern, der dem bestimmten Element entspricht.
  • 5B zeigt eine ähnliche Auswahl, die in einem Menü in einer Textverarbeitungsanwendung vorgenommen wurde, um Inhalte in ein von einem Benutzer bearbeitetes Textverarbeitungsdokument einzufügen. Hier ist der Kopierbefehl einfach „In das Cloudboard kopieren“, und es stehen sieben Auswahlmöglichkeiten zum Einfügen aus dem Cloudboard zur Verfügung. In diesem Beispiel hat der Benutzer seinen Zeiger kurzzeitig über das erste Element positioniert, das einen 4 × 12-Teil eines Tabellenkalkulationsdokumentes mit dem Titel „Wöchentlicher Fußball“ bildet. Als Ergebnis wird eine Vorschau des Inhaltes für dieses Element in der Zwischenablage in einem Popup-Fenster über dem Menü angezeigt. In einer derartigen Anzeige können aufgrund ihrer relativ geringen Größe und zur Einsparung von Rechnerressourcen die Formatierung, Bilder oder andere Informationen entfallen. Die Anzeige kann ebenfalls ein Miniaturbild aller Inhalte oder eines Teils des Inhaltes sein. Somit kann, wie gezeigt, ein Benutzer die in eine Zwischenablage zu kopierenden Inhalte und die aus einer Zwischenablage einzufügenden Inhalte schnell auswählen, und kann dies in einer relevanten Anwendung selbst vornehmen, sodass sich die Funktionalität der Schnittstelle für den Benutzer fast wie die einer Schnittstelle zum Kopieren von Inhalten in Desktop-basierten Produktivitätsanwendungen darstellt.
  • Die Interaktivität kann hier ebenfalls mit Zwischenablagen koordiniert werden, die anderen Benutzern über ein Betriebssystem zur Verfügung gestellt werden. Beispielsweise können von einem Benutzer kopierte Inhalte gleichzeitig für die Betriebssystem-Zwischenablage eines Benutzers und für ein Cloudboard bereitgestellt werden (obwohl das Cloudboard zusätzliche Elemente speichern kann, die in anderen Computersitzungen oder auf verschiedenen Computergeräten ausgewählt wurden). Außerdem können bestimmte Kopier- und Einfügeoperationen durch einen Benutzer mit einer auf einem Betriebssystem basierenden Zwischenablage interagieren, während andere mit einem Cloudboard interagieren können. Beispielsweise können Auswahlen in einem Menü einer in einem Browser ausgeführten, gehosteten Anwendung das Cloudboard aufrufen, während die Tastaturkombinationen (z. B. STRG-C, STRG-X und STRG-V) die betriebssystembasierte Zwischenablage oder beide Zwischenablagen aufrufen können.
  • 6 ist ein Blockdiagramm der Computergeräte 600 und 650, die zur Implementierung der in diesem Dokument beschriebenen Systeme und Verfahren entweder als Client oder als Server oder als Pluralität von Servern verwendet werden können. Der Computer 600 dient zur Repräsentation verschiedener digitaler Computer, wie Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade Server, Mainframes und anderer geeigneter Computer. Der Computer 650 dient zur Darstellung verschiedener mobiler Geräte, wie Personal Digital Assistants, Mobiltelefone, Smartphones und ähnliche Computergeräte. Das zusätzliche Computergerät 600 oder 650 kann USB-Speichermedien (Universal Serial Bus) beinhalten. Die USB-Speichermedien können Betriebssysteme und andere Anwendungen speichern. Die USB-Flashlaufwerke können Eingabe-/Ausgabekomponenten, wie z. B. einen kabellosen Transmitter oder USB-Anschluss enthalten, der in eine USB-Schnittstelle eines anderen Computers eingesteckt werden kann. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
  • Das Computergerät 600 beinhaltet einen Prozessor 602, einen Speicher 604, ein Speichergerät 606, eine Hochgeschwindigkeitsschnittstelle 608, die mit dem Speicher 604 und -Erweiterungsanschlüssen 610 verbunden wird, und eine Niedergeschwindigkeitsschnittstelle 612, die mit einem Niedergeschwindigkeitsbus 614 und dem Speichergerät 606 verbunden wird. Jede der Komponenten 602, 604, 606, 608, 610 und 612 sind miteinander über verschiedene Busse verbunden und können auf einer gemeinsamen Hauptplatine oder auf eine andere angemessene Weise installiert werden. Der Prozessor 602 kann Ausführungsanweisungen innerhalb des Computers 600 verarbeiten, einschließlich Anweisungen, die im Speicher 604 oder in der Speichervorrichtung 606 gespeichert sind, um die grafischen Informationen für ein GUI auf einem externen Eingabe-/Ausgabegerät, z. B. auf dem Bildschirm 616 gekoppelt mit der High-Speed-Schnittstelle 608, anzuzeigen. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse verwendet sein, wie angemessen, zusammen mit mehreren Speichern und Speichertypen. Ebenso können mehrere Computergeräte 600 angeschlossen werden, wobei jedes Gerät Beiträge zu den notwendigen Operationen bereitstellt (z. B. ein Server, eine Gruppe von Blade-Servern oder ein Multiprozessorsystem).
  • Der Speicher 604 zeichnet Informationen im Computergerät 600 auf. In einer Implementierung ist der Speicher 604 ein flüchtiges Speichergerät oder flüchtige Speichergeräte. In einer anderen Implementierung ist der Speicher 604 ein nicht flüchtiges Speichergerät oder nicht flüchtige Speichergeräte. Der Speicher 604 kann ebenfalls ein anderes computerlesbares Medium darstellen, wie einen magnetischen oder optischen Datenträger.
  • Das Speichergerät 606 ist dafür geeignet, Massenspeicherung für das Computergerät 600 bereitzustellen. In einer Implementierung kann die Speichervorrichtung 606 ein computerlesbares Medium, z. B. ein Diskettenlaufwerk, eine Festplatte, ein optisches Laufwerk oder ein Bandlaufwerk, einen Flash-Speicher oder andere ähnliche Speicherelemente oder mehrere Geräte, einschließlich Geräte in einem Speichernetzwerk oder anderen Konfigurationen beinhalten. Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 604, das Speichergerät 606 oder der Prozessorspeicher 602.
  • Der Hochgeschwindigkeits-Controller 608 verwaltet bandbreitenintensive Vorgänge für das Computergerät 600, während der Niedergeschwindigkeits-Controller 612 niedrigere bandbreitenintensive Vorgänge verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung ist der Hochgeschwindigkeits-Controller 608 an den Speicher 604, die Anzeige 616 (z. B. durch einen Grafikprozessor oder -beschleuniger) und an die Hochgeschwindigkeits-Erweiterungsanschlüsse 610 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht gezeigt). In der Implementierung ist der langsame Controller 612 an das Speichergerät 606 und an den langsamen Erweiterungsanschluss 614 gekoppelt. Der Low-Speed-Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabe-Geräte, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
  • Das Computergerät 600 kann in einer Reihe verschiedener Formen implementiert sein, wie in der Figur gezeigt. Es kann zum Beispiel als Standardserver 620 oder mehrmals in einer Gruppe solcher Server implementiert sein. Es kann auch als Teil eines rackgestützten Serversystems 624 implementiert sein. Außerdem kann es in einem Personal Computer, wie Laptop-Computer 622, implementiert sein. Alternativ können Komponenten des Computergerätes 600 mit anderen Komponenten in einem mobilen Gerät (nicht dargestellt), wie das Gerät 650, kombiniert werden. Jedes dieser Geräte kann ein oder mehrere Computergeräte 600, 650 enthalten, und ein ganzes System kann aus mehreren Computergeräten 600, 650 bestehen, die miteinander kommunizieren.
  • Das Computergerät 650 beinhaltet neben anderen Komponenten einen Prozessor 652, Speicher 664, ein Eingabe-/Ausgabegerät wie eine Anzeige 654, eine Kommunikationsschnittstelle 666 und einen Sender/Empfänger 668. Das Gerät 650 kann ebenfalls mit einer Speichervorrichtung z. B. einem Microdrive oder einem anderen Gerät ausgestattet werden, um zusätzlichen Speicher bereitzustellen. Alle Komponenten 650, 652, 664, 654, 666 und 668 sind miteinander über verschiedene Busse verbunden und verschiedene Komponenten können auf einer gemeinsamen Hauptplatine oder auf eine andere angemessene Weise installiert werden.
  • Der Prozessor 652 kann Anweisungen im Computergerät 650 ausführen, zum Beispiel Anweisungen, die in Speicher 664 gespeichert sind. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Zusätzlich dazu kann der Prozessor mit einer beliebigen Anzahl von Architekturen implementiert werden. Der Prozessor 410 kann beispielsweise ein CISC-Prozessor (Complex Instruction Set Computers), ein RISC-Prozessor (Reduced Instruction Set Computer) oder ein MISC-Prozessor (Minimal Instruction Set Computer) sein. Der Prozessor kann beispielsweise zur Koordination der anderen Komponenten des Gerätes 650 dienen, wie die Steuerung der Benutzeroberflächen, der auf dem Gerät 650 laufenden Anwendungen und der drahtlosen Verbindung des Gerätes 650.
  • Der Prozessor 652 kann mit einem Benutzer über Steuerschnittstelle 658 und Anzeigenschnittstelle 656 kommunizieren, die mit einem Display 654 gekoppelt ist. Das Display 654 kann beispielsweise ein TFT-(Thin-Film-Transistor Liquid Crystal Display)Display oder ein OLED-(Organic Light Emitting Diode)Display, oder eine andere geeignete Anzeigentechnik sein. Die Anzeigenschnittstelle 656 kann aus geeigneten Schaltungen für das Display 654 bestehen, um einem Benutzer grafische und andere Informationen bereitzustellen. Die Steuerschnittstelle 658 kann Befehle von einem Benutzer erhalten und diese für die Übermittlung an den Prozessor 652 konvertieren. Zusätzlich kann eine externe Schnittstelle 662 Kommunikation mit dem Prozessor 652 bereitstellen, zum Beispiel, um Nahbereichskommunikation des Gerätes 650 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 662 kann beispielsweise in manchen Implementierungen eine drahtgestützte Verbindung oder in anderen Implementierungen eine drahtlose Verbindung aufbauen, und es können auch mehrere Schnittstellen zur Anwendung kommen.
  • Der Speicher 664 zeichnet Informationen im Computergerät 650 auf. Der Speicher 664 kann als ein computerlesbares Medium bzw. als eines von mehreren computerlesbaren Medien, als flüchtiger Speicher bzw. als flüchtige Speicher oder als ein nicht-flüchtiger Speicher bzw. als nicht-flüchtige Speicher implementiert werden. Erweiterungsspeicher 674 kann ebenfalls bereitgestellt und mit dem Gerät 650 über Erweiterungsschnittstelle 672 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Die Speichererweiterung 674 kann zusätzlichen Speicherplatz für das Gerät 650 bereitstellen oder ebenfalls Anwendungen oder andere Informationen für das Gerät 650 speichern. Insbesondere kann die Speichererweiterung 674 Anweisungen enthalten, die zur Ausführung oder Ergänzung der vorstehend beschriebenen Prozesse erforderlich sind; zudem kann sie vertrauliche Informationen beinhalten. Deshalb kann der Erweiterungsspeicher 674 zum Beispiel als ein Sicherheitsmodul für das Gerät 650 bereitgestellt werden und kann mit Anweisungen programmiert werden, die eine sichere Verwendung des Gerätes 650 erlauben. Zusätzlich dazu können über die SIMM-Cards sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Card auf eine Weise, die nicht gehackt werden kann.
  • Der Speicher kann beispielsweise Flash-Speicher und/oder NVRAM-Speicher beinhalten, wie nachstehend erörtert. In einer Implementierung, ist ein Computerprogrammprodukt konkret in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 664, die Speichererweiterung 674 oder der Prozessorspeicher 652, das beispielsweise über den Transceiver 668 oder die externe Schnittstelle 662 empfangen werden kann.
  • Das Gerät 650 kann drahtlos über die Verbindungsschnittstelle 666 kommunizieren, die digitale Signalverarbeitungsschaltkreise beinhalten kann, falls erforderlich. Die Kommunikationsschnittstelle 666 kann Kommunikation im Rahmen verschiedener Modi oder Protokolle, wie u. a. GSM-Anrufe, SMS, EMS oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS bereitstellen. Eine solche Kommunikation kann zum Beispiel über Funkfrequenzempfänger 668 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie etwa unter Verwendung von Bluetooth, WiFi oder eines anderen solchen Sender-Empfängers (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 670 zusätzliche mit der Navigation und dem Ort verbundene drahtlose Daten für Gerät 650 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 650 ausgeführt werden.
  • Das Gerät 650 kann mithilfe des Audio-Codecs 660 auch akustisch kommunizieren, welches gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann. Der Audio-Codec 660 kann ebenfalls über einen Lautsprecher, z. B. in einem Hörer von Gerät 650 für einen Benutzer hörbaren Ton erzeugen. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne beinhalten, die von laufenden Anwendungen auf Gerät 650 erstellt wurden.
  • Das Computergerät 650 kann in einer Reihe verschiedener Formen implementiert sein, wie in der Figur gezeigt. Zum Beispiel kann es als Mobiltelefon implementiert werden 680. Es kann außerdem als Teil eines Smartphones 682, Personal Digital Assistant oder eines anderen ähnlichen mobilen Gerätes implementiert werden.
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen davon realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Prozessor für allgemeine Zwecke sein kann, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
  • Zur Interaktion mit einem Benutzer können die hier beschriebenen Systeme und Techniken auf einem Computer mit einem Anzeigegerät (z. B. mit Kathodenstrahlröhre oder Flüssigkristallanzeige-Monitor) implementiert werden, um Informationen für den Benutzer anzuzeigen, und eine Tastatur und ein Zeigegerät (z. B. Maus oder Trackball), mit denen der Benutzer Eingaben in den Computer machen kann. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung irgendeine Form von Sinnesrückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
  • Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet (z. B. als Datenserver) oder das eine Middleware-Komponente (z. B. einen Anwendungsserver) beinhaltet oder das eine Front-End-Komponente (z. B. einen Client-Computer, der eine grafische Benutzeroberfläche oder einen Webbrowser aufweist, durch die ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder eine beliebige Kombination solcher Back-End, Middleware- oder Front-End-Komponenten beinhaltet. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzen beinhalten ein lokales Netz („LAN“), ein Weitverkehrsnetz („WAN“), Peer-to-Peer-Netze (mit Ad-hoc-Mitgliedern und ständigen Mitgliedern), Netzrechnerinfrastrukturen und das Internet.
  • Das Computersystem kann Clients und Server umfassen. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
  • Eine Anzahl von Ausführungsformen wurden beschrieben. Nichtsdestotrotz ist selbstverständlich, dass verschiedene Modifizierungen vorgenommen werden können. Vorteilhafte Ergebnisse können zum Beispiel erzielt werden, wenn die Schritte der offenbarten Techniken in einer unterschiedlichen Sequenz durchgeführt werden, wenn die Komponenten in den offenbarten Systemen auf eine unterschiedliche Art und Weise kombiniert werden, oder wenn die Komponenten ersetzt oder durch andere Komponenten ausgetauscht wurden. Dementsprechend liegen Ausführungsformen innerhalb des Umfangs der nachfolgenden Ansprüche.

Claims (10)

  1. Auf einem Computer implementiertes System zur gemeinsamen Nutzung von Daten zwischen Computeranwendungen auf einem gehosteten Computerdienst, worin das System Folgendes umfasst: einen oder mehrere Web-Server, die angeordnet sind, um über das Internet mit Computergeräten zu interagieren, die sich von dem gehosteten Computerdienst entfernt befinden; ein Anwendungs-Serveruntersystem zum Bereitstellen von Daten durch den einen oder die mehreren Web-Server zum Anzeigen von interaktiven Computeranwendungen in Containerdokumenten auf Browsern der Computergeräte; ein Zwischenablage-Untersystem, das Inhalte speichert, die mit Benutzerkonten des gehosteten Computerdienstes korrelieren und das programmiert ist, um den Inhalt für untergeordnete Elemente innerhalb der Containerdokumente bereitzustellen, wobei der Inhalt so formatiert ist, dass dieser in den interaktiven Computeranwendungen enthalten ist.
  2. Auf einem Computer implementiertes System nach Anspruch 1, worin das Anwendungs-Serveruntersystem so programmiert ist, dass es den in dem Containerdokument bearbeiteten Inhalt eines Dokumentes speichert, nachdem der Inhalt zu dem im Containerdokument bearbeiteten Dokument hinzugefügt wurde.
  3. Auf einem Computer implementiertes System nach Anspruch 1, das ferner ein Authentifizierungs-Serveruntersystem umfasst, das programmiert ist, um Benutzerkonten jedem Computergerät zuzuordnen und um Benutzerkontenidentifikatoren für das Zwischenablage-Serveruntersystem zur Ermittlung eines jedem Zwischenablageeintrag zugeordneten Benutzerkontos bereitzustellen.
  4. Auf einem Computer implementiertes System nach Anspruch 3, worin das Authentisierungs-Serveruntersystem ferner so programmiert ist, dass es mit dem Zwischenablage-Serveruntersystem zusammenarbeitet, um Benutzer zu identifizieren, die sich von einem mit einer bestimmten Zwischenablage übereinstimmenden Benutzer unterscheiden und die auf einen oder mehrere Inhalte in der bestimmten Zwischenablage zugreifen können.
  5. Auf einem Computer implementiertes System nach Anspruch 1, worin die Zugänglichkeit für einen Benutzer zu einem Inhaltselement in einer bestimmten Zwischenablage durch Analysieren einer Benutzerliste bestimmt wird, die von einem der bestimmten Zwischenablage entsprechenden Benutzer festgelegt wird.
  6. Auf einem Computer implementiertes System nach Anspruch 1, worin das Anwendungs-Serveruntersystem so programmiert ist, dass es mit einem auf einem ersten Computergerät ausgeführten Containerdokument eines Browsers interagiert und worin das Zwischenablage-Serveruntersystem so programmiert ist, dass es mit einem untergeordneten Element eines Containerdokumentes eines auf einem zweiten Computergerät ausgeführten Browsers interagiert, wobei das Containerdokument des Browsers bei der Ausführung auf dem zweiten Computergerät mit dem auf dem ersten Computergerät ausgeführten Containerdokument des Browsers korreliert.
  7. Auf einem Computer implementiertes System nach Anspruch 6, worin das Zwischenablage-Serveruntersystem ferner programmiert ist, einen Befehl von dem ersten Computergerät zur Anzeige des Inhaltes einer Zwischenablage zu empfangen und als Reaktion darauf werden die jedem Element in einer Zwischenablage repräsentierenden Daten, die einem mit dem ersten Computergerät authentifizierten Benutzerkonto entsprechen, von dem Zwischenablage-Computer-Untersystem zu dem ersten Client-Gerät übertragen.
  8. Auf einem Computer implementiertes System nach Anspruch 7, worin das Zwischenablage-Serveruntersystem ferner so programmiert ist, dass es von dem ersten Containerdokument einen Befehl empfängt, Inhalt aus der Zwischenablage in ein Dokument innerhalb des ersten Containerdokumentes einzufügen und den Inhalt der Zwischenablage für ein untergeordnetes Element bereitzustellen, das sich innerhalb des ersten Containerdokumentes befindet.
  9. Auf einem Computer implementiertes System nach Anspruch 1, worin das Zwischenablage-Serveruntersystem des Weiteren programmiert ist, ein Inhaltsformatindikator zu empfangen und den Inhalt in ein dem Inhaltsformatindikator entsprechendes Format zu konvertieren, bevor der Inhalt für ein untergeordnetes Element bereitgestellt wird.
  10. Auf einem Computer implementiertes System zur gemeinsamen Nutzung von Daten zwischen Computeranwendungen auf einem gehosteten Computerdienst, worin das System Folgendes umfasst: einen oder mehrere Web-Server, die angeordnet sind, um über das Internet mit Computergeräten zu interagieren, die sich von dem gehosteten Computerdienst entfernt befinden; ein Anwendungs-Serveruntersystem zum Bereitstellen von Daten durch den einen oder die mehreren Web-Server zum Anzeigen von interaktiven Computeranwendungen in Containerdokumenten auf Browsern der Computergeräte; Mittel zum Empfangen von Inhalt von einer ersten Anwendung, die auf dem Anwendungs-Serveruntersystem ausgeführt wird, und Bereitstellen des empfangenen Inhaltes für eine auf dem Anwendungs-Serveruntersystem ausgeführte zweite Anwendung.
DE202011110894.9U 2010-02-16 2011-02-16 Serverbasierte gemeinsame Datennutzung in Computeranwendungen Expired - Lifetime DE202011110894U1 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US30512310P 2010-02-16 2010-02-16
US71/305,123 2010-02-16
US61/305,123 2010-02-16
US12/976,487 US8555187B2 (en) 2010-02-16 2010-12-22 Server-based data sharing in computer applications using a clipboard
US12/976,487 2010-12-22

Publications (2)

Publication Number Publication Date
DE202011110894U1 true DE202011110894U1 (de) 2017-01-30
DE202011110894U8 DE202011110894U8 (de) 2017-03-30

Family

ID=44370556

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202011110894.9U Expired - Lifetime DE202011110894U1 (de) 2010-02-16 2011-02-16 Serverbasierte gemeinsame Datennutzung in Computeranwendungen

Country Status (5)

Country Link
US (2) US8555187B2 (de)
EP (1) EP2537101B1 (de)
CN (1) CN102870103A (de)
DE (1) DE202011110894U1 (de)
WO (1) WO2011103192A1 (de)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633089B1 (en) 2002-05-25 2017-04-25 hopTo Inc. Aggregated search
US20120096368A1 (en) * 2010-10-14 2012-04-19 Microsoft Corporation Cloud-based virtual clipboard
WO2012102416A1 (en) * 2011-01-24 2012-08-02 Lg Electronics Inc. Data sharing between smart devices
KR101328249B1 (ko) * 2011-02-25 2013-11-14 주식회사 팬택 클라우드 서비스 제공 방법 및 상기 클라우드 서비스를 이용하는 단말기
KR101344910B1 (ko) * 2011-07-04 2013-12-26 네이버 주식회사 클라우드를 기반으로 서비스 간의 문서를 연결하는 시스템 및 방법
KR20130004654A (ko) * 2011-07-04 2013-01-14 삼성전자주식회사 휴대단말기의 텍스트 편집방법 및 장치
KR101344912B1 (ko) * 2011-07-05 2013-12-26 네이버 주식회사 클라우드 기반의 클립보드에 저장된 문서와 연계 가능한 서비스와 광고를 제공하는 문서 연결 시스템 및 방법
KR101344911B1 (ko) * 2011-07-05 2013-12-26 네이버 주식회사 클라우드 기반의 클립보드에 저장된 문서를 페이스트 가능한 서비스를 표시하는 문서 연결 시스템 및 방법
KR101589650B1 (ko) * 2011-07-05 2016-01-29 네이버 주식회사 클라우드 기반의 클립보드에 저장된 문서를 정렬하여 연계 가능한 서비스와 함께 표시하는 문서 연결 시스템 및 방법
US9069432B2 (en) * 2011-11-29 2015-06-30 Red Hat Israel, Ltd. Copy and paste buffer
US20150193267A1 (en) * 2012-02-15 2015-07-09 Quickoffice, Inc. Systems and methods for a save back feature
US20130226876A1 (en) * 2012-02-29 2013-08-29 Construcs, Inc. Synchronizing local clients with a cloud-based data storage system
US9253176B2 (en) 2012-04-27 2016-02-02 Intralinks, Inc. Computerized method and system for managing secure content sharing in a networked secure collaborative exchange environment
US9251360B2 (en) 2012-04-27 2016-02-02 Intralinks, Inc. Computerized method and system for managing secure mobile device content viewing in a networked secure collaborative exchange environment
US9553860B2 (en) 2012-04-27 2017-01-24 Intralinks, Inc. Email effectivity facility in a networked secure collaborative exchange environment
AU2013251304B2 (en) 2012-04-27 2018-12-20 Intralinks, Inc. Computerized method and system for managing networked secure collaborative exchange
US20140189483A1 (en) * 2012-04-27 2014-07-03 Intralinks, Inc. Spreadsheet viewer facility
CN103457911A (zh) * 2012-05-29 2013-12-18 北京小米科技有限责任公司 一种信息共享方法及系统
US8949729B2 (en) * 2012-06-13 2015-02-03 International Business Machines Corporation Enhanced copy and paste between applications
CN103514147A (zh) * 2012-06-29 2014-01-15 腾讯科技(深圳)有限公司 复制粘贴网页内容的方法和系统
KR101438102B1 (ko) * 2012-07-18 2014-09-11 안지윤 클립보드 동기화 서버 및 그를 포함한 클립보드 동기화 시스템
US20140095673A1 (en) * 2012-09-25 2014-04-03 Tencent Technology (Shenzhen) Company Limited Systems and methods for transmitting and receiving data
US9639318B2 (en) * 2012-09-26 2017-05-02 Tencent Technology (Shenzhen) Company Limited Systems and methods for sharing image data
US8745261B1 (en) 2012-10-02 2014-06-03 Nextbit Systems Inc. Optimized video streaming using cloud computing platform
US9106721B2 (en) * 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US20140157169A1 (en) * 2012-12-05 2014-06-05 Microsoft Corporation Clip board system with visual affordance
EP2759957B1 (de) * 2013-01-28 2018-10-31 Siemens Healthcare GmbH Übertragungsmittel für sicherheitskritische medizinische Bildinhalte
CN104008026A (zh) * 2013-02-22 2014-08-27 中兴通讯股份有限公司 云应用数据处理方法及装置
US20140259028A1 (en) * 2013-03-05 2014-09-11 Google Inc. Mechanism for establishing temporary background communication between applications
US20140281499A1 (en) * 2013-03-15 2014-09-18 Openpeak Inc. Method and system for enabling communications between unrelated applications
US11050851B2 (en) * 2013-04-30 2021-06-29 Adobe Inc. Drag-and-drop clipboard for HTML documents
US10360297B2 (en) * 2013-06-14 2019-07-23 Microsoft Technology Licensing, Llc Simplified data input in electronic documents
CN104243528B (zh) * 2013-06-20 2018-06-05 腾讯科技(深圳)有限公司 一种在多个终端设备间同步复制内容的方法和系统
US20150012861A1 (en) * 2013-07-02 2015-01-08 Dropbox, Inc. Syncing content clipboard
US20150082157A1 (en) * 2013-09-16 2015-03-19 Samsung Electronics Co., Ltd. Method and device for realizing operations between devices
CN104462033B (zh) * 2013-09-16 2018-09-28 北京三星通信技术研究有限公司 在设备间实现编辑操作的方法及设备
KR101901881B1 (ko) * 2013-09-26 2018-09-27 구글 엘엘씨 차량에 네비게이션 데이터를 제공하기 위한 시스템 및 방법
US9514327B2 (en) 2013-11-14 2016-12-06 Intralinks, Inc. Litigation support in cloud-hosted file sharing and collaboration
CN104753969B (zh) * 2013-12-25 2019-03-08 腾讯科技(深圳)有限公司 剪贴板内容信息的同步方法及装置
US9547422B2 (en) * 2014-03-07 2017-01-17 Blackberry Limited System and method for capturing notes on electronic devices
US9553916B2 (en) * 2014-03-13 2017-01-24 Ca, Inc. Copy and paste between devices
CN103905970A (zh) * 2014-03-19 2014-07-02 三星电子(中国)研发中心 一种移动终端间的信息共享方法和设备
JP6269227B2 (ja) * 2014-03-25 2018-01-31 セイコーエプソン株式会社 表示装置、プロジェクター、および表示制御方法
WO2015164521A1 (en) 2014-04-23 2015-10-29 Intralinks, Inc. Systems and methods of secure data exchange
CN105095970B (zh) * 2014-04-25 2018-09-21 阿里巴巴集团控股有限公司 第三方应用的执行方法及系统
CN105094965A (zh) * 2014-05-23 2015-11-25 同星实业股份有限公司 数据传输系统的数据传输方法
CN104023057A (zh) * 2014-05-30 2014-09-03 天津三星通信技术研究有限公司 数据共享方法及系统
US9826008B1 (en) 2014-05-30 2017-11-21 Google Inc. Embedding a user interface of a guest module within a user interface of an embedder module
US11494056B1 (en) 2014-08-29 2022-11-08 Open Invention Network Llc Dynamic document updating application interface and corresponding control functions
US9940312B1 (en) 2014-11-18 2018-04-10 Google Llc Transferring a web content display from one container to another container while maintaining state
KR20160093471A (ko) * 2015-01-29 2016-08-08 엘지전자 주식회사 이동 단말기 및 그 제어방법
TWI516965B (zh) * 2015-02-05 2016-01-11 廣達電腦股份有限公司 檔案分享方法及系統
US20160342449A1 (en) * 2015-05-22 2016-11-24 Microsoft Technology Licensing, Llc Data exchange across multiple computing devices through a proactive intelligent clipboard
US10489032B1 (en) 2015-07-29 2019-11-26 Google Llc Rich structured data interchange for copy-paste operations
US10033702B2 (en) 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
US10210229B2 (en) 2015-08-27 2019-02-19 International Business Machines Corporation File creation through virtual containers
US10210383B2 (en) 2015-09-03 2019-02-19 Microsoft Technology Licensing, Llc Interacting with an assistant component based on captured stroke information
US10387034B2 (en) 2015-09-03 2019-08-20 Microsoft Technology Licensing, Llc Modifying captured stroke information into an actionable form
US10599526B2 (en) * 2016-01-13 2020-03-24 Microsoft Technology Licensing, Llc Auto-save operation for collaborative editing of electronic documents
US10015230B1 (en) 2016-02-09 2018-07-03 Robert Buergi Copying and pasting among networked devices
US10627993B2 (en) 2016-08-08 2020-04-21 Microsoft Technology Licensing, Llc Interacting with a clipboard store
US10542103B2 (en) 2016-09-12 2020-01-21 Microsoft Technology Licensing, Llc Location based multi-device communication
US10171563B2 (en) * 2016-10-31 2019-01-01 Microsoft Technology Licensing, Llc Systems and methods for an intelligent distributed working memory
US10417320B2 (en) * 2016-12-28 2019-09-17 Microsoft Technology Licensing, Llc Providing insertion feature with clipboard manager application
US10713429B2 (en) * 2017-02-10 2020-07-14 Microsoft Technology Licensing, Llc Joining web data with spreadsheet data using examples
US10404797B2 (en) * 2017-03-03 2019-09-03 Wyse Technology L.L.C. Supporting multiple clipboard items in a virtual desktop infrastructure environment
CN109450997B (zh) * 2018-10-26 2022-09-30 平安科技(深圳)有限公司 数据跨终端迁移方法、装置、计算机设备及存储介质
CN112149015A (zh) * 2019-06-28 2020-12-29 北京京东尚科信息技术有限公司 对象处理方法和装置
CN111062057B (zh) * 2019-12-16 2022-06-14 英联(厦门)金融技术服务股份有限公司 一种中立的数据应用方法、装置以及系统
CN112445579B (zh) * 2020-12-11 2023-07-21 西安万像电子科技有限公司 零终端数据处理系统及其文件复制方法、装置
CN112581180A (zh) * 2020-12-25 2021-03-30 福州掌中云科技有限公司 基于剪贴板的追踪iOS系统中APP来源的方法及设备
US11960447B2 (en) * 2020-12-31 2024-04-16 Google Llc Operating system-level management of multiple item copy and paste
CN113918359A (zh) * 2021-09-29 2022-01-11 西安万像电子科技有限公司 数据复制粘贴系统、方法和装置
US11863615B2 (en) 2022-03-18 2024-01-02 T-Mobile Usa, Inc. Content management systems providing zero recovery time objective
US11893262B2 (en) 2022-03-25 2024-02-06 Dropbox, Inc. Generating and maintaining a batch action clipboard for web-based platforms
US11695853B1 (en) 2022-04-07 2023-07-04 T-Mobile Usa, Inc. Content management systems providing zero recovery point objective
US20230334018A1 (en) * 2022-04-18 2023-10-19 Microsoft Technology Licensing, Llc File selection user interface
US11861139B1 (en) * 2022-10-31 2024-01-02 Microsoft Technology Licensing, Llc Deferring and accessing deferred content from multiple applications

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2098461A1 (en) * 1992-06-17 1993-12-18 Antony S. Williams Method and system for registering data formats for objects
EP1028375B1 (de) * 1994-12-13 2003-06-18 Microsoft Corporation Datentransfer mit erweitertem Format für die Zwischenablage
CN101359350B (zh) * 1995-02-13 2012-10-03 英特特拉斯特技术公司 用于安全地管理在数据项上的操作的方法
KR100213890B1 (ko) * 1997-03-26 1999-08-02 윤종용 객체 관리 콘테이너 및 방법
US5964834A (en) * 1997-09-24 1999-10-12 International Business Machines Corporation System grouping clipboard memories associating with computers in a network into a shared clipboard memory for sharing data object in the network
US6338084B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation Method for process-specific exchange of data between machines in a network
US6538667B1 (en) * 1999-07-23 2003-03-25 Citrix Systems, Inc. System and method for providing immediate visual response to user input at a client system connected to a computer system by a high-latency connection
JP2002288124A (ja) * 2001-03-21 2002-10-04 Internatl Business Mach Corp <Ibm> ワークステーションシステム、コンピュータ装置、データ転送方法、データ編集方法、コンピュータプログラムの作成方法、コンピュータプログラム、記憶媒体
US6983328B2 (en) * 2001-05-18 2006-01-03 Hewlett-Packard Development Company, L.P. Trusted internet clipboard
US6901455B2 (en) * 2001-06-29 2005-05-31 Intel Corporation Peripheral sharing device with unified clipboard memory
US7950066B1 (en) * 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US7509577B2 (en) * 2002-03-08 2009-03-24 Toshiba Corp Oration Method and system for implementing a clipboard
CA2412001C (en) * 2002-11-18 2015-10-27 Corel Corporation System and method for manipulating multiple clip items of data
US20040210846A1 (en) * 2003-04-21 2004-10-21 Olsen Gregory P. Transparent network clipboard sharing
KR20060023964A (ko) * 2003-06-13 2006-03-15 인터내셔널 비지네스 머신즈 코포레이션 정보 공유 방법, 컴퓨터 프로그램, 컴퓨터 판독 가능한매체를 포함하는 프로그램 제품, 정보 공유 시스템 및데이터 처리 개체
US20050004986A1 (en) * 2003-07-03 2005-01-06 Aoki Norihiro Edwin Remote population of computer clipboard via a messaging system
US20050066335A1 (en) * 2003-09-23 2005-03-24 Robert Aarts System and method for exposing local clipboard functionality towards external applications
US7478336B2 (en) * 2003-11-06 2009-01-13 International Business Machines Corporation Intermediate viewer for transferring information elements via a transfer buffer to a plurality of sets of destinations
US20050102630A1 (en) * 2003-11-06 2005-05-12 International Busainess Machines Corporation Meta window for merging and consolidating multiple sources of information
US7526768B2 (en) * 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
US20050203935A1 (en) * 2004-03-11 2005-09-15 International Business Machines Corporation Clipboard content and document metadata collection
US20060047669A1 (en) * 2004-08-26 2006-03-02 Durrence Hugh D System and method for document and electronic file management
US7590744B2 (en) * 2004-12-15 2009-09-15 Guard Insurance Group Remote communication system and method implementing a session server and one or more object servers
US7725476B2 (en) * 2005-06-14 2010-05-25 International Business Machines Corporation System and method for automated data retrieval based on data placed in clipboard memory
US7870493B2 (en) * 2005-10-03 2011-01-11 Microsoft Corporation Distributed clipboard
US7783985B2 (en) * 2006-01-04 2010-08-24 Citrix Systems, Inc. Systems and methods for transferring data between computing devices
US7533349B2 (en) * 2006-06-09 2009-05-12 Microsoft Corporation Dragging and dropping objects between local and remote modules
US8370423B2 (en) * 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US8020112B2 (en) * 2006-11-06 2011-09-13 Microsoft Corporation Clipboard augmentation
US20080109464A1 (en) * 2006-11-06 2008-05-08 Microsoft Corporation Extending Clipboard Augmentation
US8453066B2 (en) * 2006-11-06 2013-05-28 Microsoft Corporation Clipboard augmentation with references
US20080141136A1 (en) * 2006-12-12 2008-06-12 Microsoft Corporation Clipping Synchronization and Sharing
US7917507B2 (en) * 2007-02-12 2011-03-29 Microsoft Corporation Web data usage platform
US20080196040A1 (en) * 2007-02-14 2008-08-14 Oracle International Corporation Enterprise clipboard with context
US8429551B2 (en) * 2007-02-15 2013-04-23 Microsoft Corporation Application-based copy and paste operations
US7933296B2 (en) * 2007-03-02 2011-04-26 Microsoft Corporation Services for data sharing and synchronization
US20080240010A1 (en) * 2007-03-26 2008-10-02 Motorola, Inc. Intelligent orchestration of cross-media communications
US7958516B2 (en) * 2007-04-18 2011-06-07 Google Inc Controlling communication within a container document
US9128784B2 (en) * 2007-05-08 2015-09-08 At&T Intellectual Property I, L.P. Data transfer using a network clipboard
JP5349778B2 (ja) * 2007-09-20 2013-11-20 キヤノン株式会社 情報処理装置、情報処理方法、ならびにそのプログラムおよび記憶媒体
US20090100503A1 (en) * 2007-10-15 2009-04-16 International Business Machines Corporation Authentication for shared wireless peripherals having an internal memory store for sharing digital content across multiple hosts
US8190707B2 (en) * 2007-10-20 2012-05-29 Citrix Systems, Inc. System and method for transferring data among computing environments
US7818458B2 (en) * 2007-12-03 2010-10-19 Microsoft Corporation Clipboard for application sharing
US9003059B2 (en) * 2008-03-31 2015-04-07 Microsoft Technology Licensing, Llc Running applications in an online or offline mode based on the availability of the connection to the remote web server
US9507651B2 (en) * 2008-04-28 2016-11-29 Microsoft Technology Licensing, Llc Techniques to modify a document using a latent transfer surface
US8205216B2 (en) * 2008-05-01 2012-06-19 International Business Machines Corporation Data sharing between applications where only one application knows the business purpose of the data
US8296671B2 (en) * 2008-05-01 2012-10-23 Microsoft Corporation Enabling access to rich data by intercepting paste operations
US10002035B2 (en) * 2009-08-21 2018-06-19 International Business Machines Corporation Visual selection and rendering of multiple clip board formats
US8171390B1 (en) * 2009-10-22 2012-05-01 Intuit Inc. Method and system for viewing and transferring data between documents
US20120096368A1 (en) * 2010-10-14 2012-04-19 Microsoft Corporation Cloud-based virtual clipboard
US20130036167A1 (en) * 2011-08-05 2013-02-07 International Business Machines Corporation Automatic synchronization of clipboards
US8725808B2 (en) * 2012-05-10 2014-05-13 Intel Mobile Communications GmbH Method for transferring data between a first device and a second device
KR101438102B1 (ko) * 2012-07-18 2014-09-11 안지윤 클립보드 동기화 서버 및 그를 포함한 클립보드 동기화 시스템

Also Published As

Publication number Publication date
US20130346491A1 (en) 2013-12-26
US8555187B2 (en) 2013-10-08
EP2537101A4 (de) 2017-02-01
DE202011110894U8 (de) 2017-03-30
US20110202971A1 (en) 2011-08-18
EP2537101A1 (de) 2012-12-26
EP2537101B1 (de) 2020-12-23
WO2011103192A1 (en) 2011-08-25
CN102870103A (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
DE202011110894U1 (de) Serverbasierte gemeinsame Datennutzung in Computeranwendungen
DE60131683T2 (de) Verfahren und system zur verwaltung von mehreren netzwerk-betriebsmitteln
US10678999B2 (en) Real-time collaboration in a hosted word processor
DE202011110867U1 (de) Rich-Text- und browserbasiertes Textverarbeitungsprogramm
DE69830457T2 (de) Netzwerkbasiertes Werkzeug zum Begutachten von Dokumenten
DE60028561T2 (de) Bereitstellung von kundendiensten, die daten aus datenquellen abrufen, wobei die datenquellen die vom kunden geforderten formate nicht notwendigerweise unterstützen
DE202011110880U1 (de) Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm
DE202011110879U1 (de) Rich-Content in einem Textverarbeitungssystem auf Browserbasis
DE202011110891U1 (de) Scrollen in umfangreichen gehosteten Datenbestand
DE112017000169T5 (de) Gerätekennungsabhängige vorgangsverarbeitung von paketbasierter datenkommunikation
DE202013012499U1 (de) Hintergrundseite auf Browserebene zur Bereitstellung mehrfacher Ansichten
DE102016125783A1 (de) Bereitstellen von Vorschlägen für die Interaktion mit einem automatisierten Assistenten in einem Multi-User-Nachrichtenaustausch-Thread
DE202012013447U1 (de) Inline-Benutzeradressierung in Chat- und Dokumentbearbeitungssitzungen
DE202016008163U1 (de) Vorrichtung für das Ermitteln des nicht-textlichen Antwortinhalts zur Einbeziehung in eine Antwort auf eine elektronische Kommunikation
DE102016125508A1 (de) Auffindbarkeitssystem für Sprachaktionen
DE202015009254U1 (de) Automatisch erzeugende ausführungssequenzen für workflows
DE112015004481T5 (de) Rahmen für zustandskennung mobiler anwendungen
DE202015009309U1 (de) Systeme für die Bearbeitung einer Datei in einer nicht nativen Applikation unter Verwendung einer Applikations-Engine
DE202010018483U1 (de) System zum Zusammenführen von Bearbeitungen für eine Konversation in einem gehosteten Konversationssystem
DE10003907A1 (de) Browser für die Anwendung beim Zugriff auf Hypertext-Dokumente in einer Mehrnutzer-Computerumgebung
DE112011102650T5 (de) Eingabe in gesperrtes Computergerät
DE102014214641A1 (de) Informationsverarbeitungsvorrichtung, Verfahren zur Steuerung der Vorrichtung und Speichermedium
DE202015009266U1 (de) Benutzerschnittsstelle für ein Speichersystem mit unverankerter Dateisammlung
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE112010003948T5 (de) Auswerten von Objekten einer Grafischen Benutzeroberfläche zur Überprüfung von Standards

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right