BRPI0712350A2 - arrastar e soltar objetos entre módulos locais e remotos - Google Patents

arrastar e soltar objetos entre módulos locais e remotos Download PDF

Info

Publication number
BRPI0712350A2
BRPI0712350A2 BRPI0712350-7A BRPI0712350A BRPI0712350A2 BR PI0712350 A2 BRPI0712350 A2 BR PI0712350A2 BR PI0712350 A BRPI0712350 A BR PI0712350A BR PI0712350 A2 BRPI0712350 A2 BR PI0712350A2
Authority
BR
Brazil
Prior art keywords
drop
drag
act
application
component
Prior art date
Application number
BRPI0712350-7A
Other languages
English (en)
Inventor
Elton Saul
Carl M Carter-Schwendler
Nadim Y Abdo
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0712350A2 publication Critical patent/BRPI0712350A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/08Protocols specially adapted for terminal emulation, e.g. Telnet

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

ARRASTAR E SOLTAR OBJETOS ENTRE MóDULOS LOCAIS E REMOTOS A presente invenção se estende a métodos, sistemas, e produtos de programas de computadores para arrastar e soltar objetos entre módulos locais e remotos. Os componentes de servidor de terminal simulam a funcionalidade dos participantes em operações de arrastar e soltar, para facilitar o arrastar 0 soltar de objetos entre módulos locais e remotos e vice-versa. Os componentes de servidor de terminal interagem localmente, para comunicação com os módulos participantes em ume operação de arrastar e soltar. Os componentes de servidor de terminal também enviam mensagens por uma sessão de servidor de terminal, para retransmitir as informações adequedas de arrastar e soltar para os componentes de servidor de terminal correspondentes, na outra extremidade da sessão de servidor de terminal.

Description

"ARRASTAR E SOLTAR OBJETOS ENTRE MÓDULOS LOCAIS E REMOTOS"
ANTECEDENTES
Sistemas computadorizados e tecnologia relacionada afetam muitos aspectos da sociedade. De fato, a capacidades de sistemas computadorizados em processar informa- ções transformou o modo como vivemos e trabalhamos. Os sistemas computadorizados agora executam comumente várias tarefas (por exemplo, processamento de texto, planeja- mento, e gerenciamento de dados), que antes do advento de sistema computadorizado e- ram executadas manualmente. Tipicamente, para executar essas várias tarefas, um sistema computadorizado inclui várias aplicações correspondentes. Por exemplo, para executar pro- cessamento de texto, um sistema computadorizado pode incluir uma aplicação de proces- samento de texto, para manipular planilhas eletrônicas, um sistema computadorizado pode incluir uma aplicação de planilha eletrônica, etc.
Em um meio físico de computação dedicado, é freqüentemente útil que seja possí- vel mover objetos entre as aplicações, que executam diferentes tarefas em um sistema computadorizado. Por exemplo, pode ser útil movimentar uma parte do texto gerado em a- plicação de processamento de texto em um programa de apresentação, como o texto descri- tivo para uma imagem ou desenho. Para permitir o movimento de objetos entre as aplica- ções, alguns sistemas computadorizados incluem uma parte de memória (por exemplo, uma área de armazenamento temporário de dados ("clipboard"), que pode ser interfaceada de uma maneira comum por aplicações do sistema computadorizado. Desse modo, uma apli- cação pode interfacear com uma parte de memória para armazenar um objeto, e depois uma outra aplicação pode interfacear com a parte de memória, para recuperar o objeto. Desse modo, as aplicações (mesmo aquelas que não podem compativelmente trocar obje- tos diretamente) podem trocar objetos pela memória da parte.
Muitos meios físicos de computação dedicados podem incluir a capacidade mais conveniente de usar dispositivos de entrada em combinação com avisos visuais, para trans- ferir diretamente objetos entre as aplicações compatíveis. Um mecanismo comum para a transferência direta entre as aplicações é o "arrastar e soltar". Para facilitar o arrastar e sol- tar, um usuário identifica um objeto em uma aplicação (por exemplo, uma parte de texto, uma imagem ou uma célula de planilha eletrônica). Por exemplo, o usuário pode realçar uma parte de texto com um mouse. Um aviso visual, por exemplo, iluminação traseira, pode ser usado para indicar ao usuário que o texto está selecionado.
O usuário manipula os dispositivos de entrada para selecionar o objeto identificado. Por exemplo, o usuário manipula um mouse, para movimentar um cursor pelo texto identifi- cado e pode depois comprimir um botão esquerdo de mouse. O usuário pode ainda manipu- lar os dispositivos de entrada para movimentar o objeto para outra aplicação. Por exemplo, ainda que mantendo o botão esquerdo de mouse comprimido, o usuário pode manipular o mouse para movimentar (arrastar) o cursor pela parte de topo da outra aplicação. Uma vez na parte de topo da outra aplicação, o usuário pode liberar o botão esquerdo de mouse. O ato de liberar o botão de mouse faz com que o objeto seja transferido para (ou solto em) outra aplicação.
Em outros meios físicos, os sistemas computadorizados são acoplados entre si e a outros dispositivos eletrônicos, para formar ambas as redes de computador com e sem fio, pelas quais os sistemas computadorizados e outros dispositivos eletrônicos podem transferir dados eletrônicos. Por conseguinte, muitas tarefas executadas em um sistema computadori- zado (por exemplo, comunicação por voz, acesso a correio eletrônico, controle de aparelhos eletrônicos domésticos, navegação pela rede, e documentos de impressão) incluem a co- municação (por exemplo, a troca de mensagens eletrônicas) entre vários sistemas compu- tadorizados e/ou outros dispositivos eletrônicos por redes de computadores com ou sem fio.
Em um meio físico ligado em rede, é também freqüentemente útil que seja possível movimentar objetos entre as aplicações que executam diferentes tarefas, em que algumas aplicações são executadas remotamente, por exemplo, em um servidor de terminal. Um ser- vidor de terminal é um sistema computadorizado, que mantém aplicações que podem ser executadas remotamente por sistemas computadorizados de clientes. A entrada é introduzi- da em um sistema computadorizado de cliente e transferida por uma rede (por exemplo, usando protocolos baseados na família de protocolos ITU T.120, tal como, por exemplo, Protocolo de Computador de Área de Trabalho Remoto - "RDP") a uma aplicação no servi- dor de terminal. A aplicação processa a entrada como se a entrada fosse introduzida no ser- vidor do terminal. A aplicação gera uma saída em resposta à entrada recebida e a saída é transferida pela rede (por exemplo, também protocolos à base de T.120) para o sistema computadorizado de cliente. O sistema computadorizado de cliente apresenta os dados de saída. Desse modo, a entrada é recebida e transmitida no sistema computadorizado de cli- ente, enquanto que o processamento ocorre de fato no servidor de terminal.
Para propiciar o movimento de objetos entre as aplicações locais e remotas, alguns sistemas computadorizados ligados em rede incluem uma funcionalidade de clipboard, simi- lar àquela usada em um meio físico dedicado. Uma parte de memória (ou clipboard) é alo- cada e pode ser interfaciada de uma maneira comum por aplicações no sistema computado- rizado. Desse modo, uma aplicação local pode interfacear com a parte de memória, para armazenar um objeto e depois uma aplicação remota pode interfacear com a parte de me- mória, para recuperar o objeto ou vice-versa. Desse modo, as aplicações (mesmos aquelas sendo executadas em diferentes sistemas computadorizados) podem trocar objetos pela memória de parte.
No entanto, muitos sistemas computadorizados ligados em rede carecem da capa- cidade de arrastar e soltar objetos entre as aplicações locais e remotas e vice-versa. Isto é, os componentes de servidor de terminal de cliente e de servidor não são tipicamente confi- gurados para transferir objetos de arrastar e soltar por uma sessão de servidor de terminal e interagir com uma fonte de soltar ou alvo de soltar, para facilitar uma transferência de arras- tar e soltar. Por exemplo, um componente de servidor não tem, tipicamente, qualquer modo de determinar se o movimento de um cursor de mouse, fora de uma janela de área de traba- lho remota (em um sistema de cliente), está associado com uma operação de arrastar e sol- tar, ou se um usuário está movimentando o mouse por outras razões.
RESUMO
A presente invenção se estende a métodos, sistemas e produtos de programas de computador para objetos de arrastar e soltar entre módulos locais e remotos. Em algumas modalidades, um objeto é arrastado e solto de uma aplicação local em uma aplicação remo- ta. Um componente de cliente detectar que um cursor de janela de área de trabalho foi mo- vimentado de fora para dentro dos limites de uma janela de aplicação para uma aplicação remota. O componente de cliente recebe uma notificação de soltar, indicando uma operação de arrastar e soltar pendente. A notificação de soltar indica que um objeto de arrastar e sol- tar vai ser transferido para a aplicação remota. O componente de cliente envia um pedido para transferir o objeto de arrastar e soltar, juntamente com uma localização de coordena- das do cursor da janela de área de trabalho a um sistema computadorizado de servidor por uma sessão de servidor de terminal.
Um componente de servidor recebe o pedido e encaminha uma notificação de transferência de objeto de arrastar e soltar para a aplicação remota. O componente de ser- vidor age como uma fonte de soltar representante em nome da aplicação local, em resposta ao recebimento de um pedido para um objeto de arrastar e soltar, incluindo o recebimento de um pedido para o objeto de arrastar e soltar da aplicação remota. O componente de ser- vidor encaminha o pedido para o objeto de arrastar e soltar pela sessão de servidor de ter- minal.
O componente de cliente recebe o pedido para o objeto de arrastar e soltar do sis- tema computadorizado de servidor pela sessão de servidor de terminal. O componente de cliente age como um alvo de soltar representante, em nome da aplicação remota, incluindo o encaminhamento do pedido para o objeto de arrastar e soltar para a aplicação local e o recebimento do objeto de arrastar e soltar da aplicação remota. O componente de cliente envia o objeto de arrastar e soltar par ao sistema computadorizado de servidor pela sessão de servidor de terminal.
O componente de servidor recebe o objeto de arrastar e soltar do componente de cliente pela sessão de servidor de terminal. O componente de servidor age como uma fonte de soltar representante, em nome da aplicação local, incluindo o envio do objeto de arrastar e soltar para a aplicação remota. Em outras modalidades, um objeto é arrastado e solto de uma aplicação remota pa- ra uma aplicação local. Um componente de cliente detecta que um cursor de janela de área de trabalho foi movimentado de dentro para fora dos limites de uma aplicação remota. O componente de cliente envia uma mensagem para o componente de servidor pela sessão de servidor de terminal. A mensagem indica ao componente de servidor que o cursor da janela da área de trabalho foi movimentado de dentro para fora dos limites da janela de apli- cação para a aplicação remota.
O componente de servidor recebe a mensagem do componente de cliente pela sessão de servidor de terminal. O componente de servidor determina que o movimento do cursor da janela da área de trabalho é associado com uma operação de arrastar e soltar pendente.
O componente de cliente age como uma fonte de soltar representante, em nome da aplicação remota, incluindo o recebimento de uma consulta para um objeto de arrastar e soltar da aplicação local. A consulta é indicativa de uma notificação de soltar na aplicação local, representando que o objeto de arrastar e soltar vai ser transferido para a aplicação local. O componente de cliente envia um pedido para o objeto de arrastar e soltar ao com- ponente de servidor pela sessão de servidor de terminal.
O componente de servidor recebe o pedido. O componente de servidor age como um alvo de soltar representante da aplicação local, incluindo o encaminhamento do pedido para o objeto de arrastar e soltar para a aplicação remota e receber o objeto de arrastar e soltar da aplicação remota. O componente de servidor envia o objeto de arrastar e soltar para o sistema computadorizado de cliente pela sessão de servidor de terminal.
O componente de cliente recebe o objeto de arrastar e soltar. O componente de servidor age como uma fonte de soltar representante, em nome da aplicação remota, inclu- indo o envio do objeto de arrastar e soltar para a aplicação local.
Este resumo é proporcionado para introduzir uma seleção de conceitos em uma forma simplificada, que é descrita adicionalmente abaixo na Descrição Detalhada. Este re- sumo não é intencionado para identificar itens básicos ou itens essenciais da matéria reivin- dicada, nem é intencionado para ser usado como um auxiliar na determinação do âmbito da matéria reivindicada.
Outros aspectos e vantagens vão ser apresentados na descrição que se segue, e, em parte, vai ser óbvio da descrição, ou podem ser aprendidos pela prática dos ensinamen- tos do presente relatório descritivo. Os aspectos e vantagens da invenção podem ser reali- zados e obtidos por meio dos instrumentos e combinações particularmente apontados da descrição e das reivindicações anexadas apresentadas a seguir, ou podem ser aprendidos pela prática da invenção, como apresentado a seguir.
BREVE DESCRIÇÃO DOS DESENHOS Para descrever a maneira na qual as vantagens e aspectos indicados acima e ou- tros podem ser obtidos, uma descrição mais particular da matéria descrita sucintamente a- cima vai ser feita, por referência às modalidades específicas, que são ilustradas nos dese- nhos em anexo. Entendendo que esses desenhos ilustram apenas as modalidades típicas e não devem ser, portanto, considerados como sendo Iimitantes do âmbito, as modalidades vão ser descritas e explicadas com especificidade e detalhes adicionais pelo uso dos dese- nhos em anexo, nos quais:
a Figura 1A ilustra uma arquitetura de computador exemplificativa, que facilita o ar- rastar e soltar de um objeto, de um módulo local para um módulo remoto;
a Figura 1B ilustra uma janela de área de trabalho exemplificativa ilustrando uma operação de arrastar e soltar, de um módulo local para um módulo remoto;
as Figuras 2A - 2C ilustram um fluxograma de um método exemplificativo para o ar- rastar e soltar de um objeto de um módulo local para um módulo remoto;
a Figura 3A ilustra uma arquitetura de computador exemplificativa, que facilita o ar- rastar e soltar de um objeto, de um módulo local para um módulo remoto;
a Figura 3B ilustra uma janela de área de trabalho exemplificativa ilustrando uma operação de arrastar e soltar, de um módulo local para um módulo remoto; e
as Figuras 4A - 4C ilustram um fluxograma de um método exemplificativa para o ar- rastar e soltar de um objeto, de um módulo local para um módulo remoto.
DESCRIÇÃO DETALHADA
A presente invenção se estende a métodos, sistemas e produtos de programas de computador para o arrastar e soltar de objetos entre módulos locais e remotos. Em algumas modalidades, um objeto é arrastado e solto de uma aplicação local a uma aplicação remota.
Um componente de cliente detecta que um cursor de área de trabalho foi movimentado de fora para dentro dos limites de uma janela de aplicação para uma aplicação remota. O com- ponente de cliente recebe uma notificação de soltar, indicando uma operação de arrastar e soltar pendente. A notificação de soltar indica que um objeto de arrastar e soltar vai ser transferido para a aplicação remota. O componente de cliente envia um pedido para transfe- rir o objeto de arrastar e soltar, juntamente com a localização de coordenadas do cursor da janela da área de trabalho a um sistema computadorizado de servidor por uma sessão de servidor de terminal.
Um componente de servidor recebe o pedido e encaminha a notificação de transfe- rência do objeto de arrastar e soltar para a aplicação remota. O componente de servidor age como uma fonte de soltar representante, em nome da aplicação local, em resposta ao rece- bimento do pedido para transferir um objeto de arrastar e soltar, incluindo um pedido para o objeto de arrastar e soltar da aplicação remota. O componente de servidor encaminha o pe- dido para o objeto de arrastar e soltar ao componente de servidor pela sessão de servidor de terminal.
O componente de servidor recebe o pedido para o objeto de arrastar e soltar do sis- tema computadorizado de servidor pela sessão de servidor de terminal. O componente de servidor age como um alvo de soltar representante, em nome da aplicação remota, incluindo o encaminhamento do pedido para o objeto de arrastar e soltar para a aplicação local e o recebimento do objeto de arrastar e soltar da aplicação local. O componente de servidor envia o objeto de arrastar e soltar para o sistema computadorizado de servidor pela sessão de servidor de terminal.
O componente de servidor recebe o objeto de arrastar e soltar do componente de cliente pela sessão de servidor de terminal. O componente de servidor age como uma fonte de soltar representante, incluindo o envio do objeto de arrastar e soltar para a aplicação re- mota.
Em outras modalidades, um objeto é arrastado e solto de uma aplicação remota pa- ra uma aplicação local. Um componente de cliente detecta que um cursor da janela da área de trabalho foi movimentado de dentro para fora dos limites de uma aplicação remota. O componente de cliente envia uma mensagem para o componente de servidor pela sessão de servidor de terminal. A mensagem indica ao componente de servidor que o cursor da janela da área de trabalho foi movimentado de dentro para fora dos limites da janela de apli- cação para a aplicação remota.
O componente de servidor recebe a mensagem do componente de cliente pela sessão de servidor de terminal. O componente de servidor determina que o movimento do cursor da janela da área de trabalho está associado com uma objeto de arrastar e soltar pendente.
O componente de cliente age como uma fonte de soltar representante, em nome da aplicação remota, incluindo o recebimento de uma consulta para um objeto de arrastar e soltar da aplicação local. A consulta é indicativa de uma notificação de soltar na aplicação local, representando que o objeto de arrastar e soltar vai ser transferido para a aplicação local. O componente de cliente envia um pedido para o objeto de arrastar e soltar para o componente de servidor pela sessão de servidor de terminal.
O componente de servidor recebe o pedido. O componente de servidor age como uma fonte de soltar representante, em nome da aplicação local, incluindo o encaminhamen- to do pedido para o objeto de arrastar e soltar para a aplicação remota e o recebimento do objeto de arrastar e soltar da aplicação remota. O componente de servidor envia o objeto de arrastar e soltar para o sistema computadorizado de cliente pela sessão de servidor de ter- minai.
O componente de cliente recebe o objeto de arrastar e soltar. O componente de cli- ente age como uma fonte de soltar representante, em nome da aplicação remota, incluindo o envio do objeto de arrastar e soltar para a aplicação local.
As modalidades da presente invenção podem compreender um computador de fim especial ou multipropósito, incluindo hardware de computador, como discutido em mais de- talhes abaixo. As modalidades dentro do âmbito da presente invenção também incluem meios legíveis por computador, para conduzir ou ter instruções executáveis por computador ou estruturas de dados armazenadas nele. Esses meios legíveis por computador podem ser quaisquer meios disponíveis, que podem ser acessados por um computador de fim especial ou multipropósito. Por meio de exemplo, e não limitação, os meios legíveis por computador podem compreender meios de armazenamento legíveis por computador, tais como, RAM, ROM, EEPROM, CD-ROM ou dispositivos de armazenamento em disco óptico, disco magnético ou outros de armazenamento magnético, ou qualquer outro meio, que pode ser usado para armazenar um meio de código de programa, na forma de instruções executáveis por computador ou estruturas de dados, e que pode ser acessado por um computador de fim especial ou multipropósito.
Nesta descrição e nas reivindicações apresentadas abaixo, uma "rede" é definida como uma ou mais ligações de dados, que permitem o transporte de dados eletrônicos entre os sistemas e/ou módulos computadorizados. Quando as informações são transferidas ou proporcionadas por uma rede ou outra conexão de comunicações (fixa, sem fio ou uma combinação de fixa ou sem fio) a um computador, o computador vê adequadamente a cone- xão como um meio legível por computador. Desse modo, por meio de exemplo, e não limita- ção, os meios legíveis por computador podem compreender uma ligação de rede ou de da- dos, que pode ser usada para conduzir ou armazenar meios de códigos de programas, na forma de instruções executáveis por computador ou estruturas de dados, e que podem ser acessados por um computador de fim especial ou multipropósito.
As instruções executáveis por computador compreendem, por exemplo, instruções e dados que fazem com um computador multipropósito, um computador de fim especial, ou um dispositivo de processamento de fim especial, execute uma certa função ou um grupo de funções. As instruções executáveis por computador podem ser, por exemplo, binárias, ins- truções de formato intermediário, tal como linguagem de montagem, ou ainda um código de fonte. Embora a matéria tenha sido descrita em linguagem específica nos aspectos estrutu- rais e/ou atos metodológicos, deve-se entender que a matéria definida nas reivindicações em anexo não é necessariamente limitada aos aspectos ou atos descritos acima. Em vez disso, os aspectos e atos descritos são expostos como formas exemplificativas de imple- mentação das reivindicações.
Aqueles versados na técnica vão considerar que a invenção pode ser praticada em meios físicos de computação de rede com muitos tipos de configurações de sistemas com- putadorizados, incluindo computadores pessoais, computadores de mesa, computadores de colo, computadores portáteis, sistemas multiprocessadores, aparelhos eletrônicos para con- sumidores finais programáveis ou à base de microprocessadores, PCs em rede, minicompu- tadores, computadores de grande porte, telefones móveis, PDAs1 pagers e assemelhados. A invenção pode ser também praticada em meios físicos de sistemas distribuídos, nos quais os sistemas computadorizados locais e remotos, que são ligados (ou por ligações fixas de dados, ligações sem fio de dados, ou por uma combinação de ligações fixas e sem fio de dados) por uma rede, ambos executando as tarefas. Em um meio físico de sistema distribuí- do, os módulos de programas podem ser localizados em ambos os dispositivos de armaze- namento de memória locais e remotos.
Nesta descrição e nas reivindicações abaixo, um "alvo de soltar" é definido como um módulo, que vai receber um objeto que é a matéria de uma operação de arrastar e sol- tar.
Nesta descrição e nas reivindicações abaixo, uma "fonte de soltar" é definida como um módulo que vai originar um objeto que é a matéria de uma operação de arrastar e soltar.
Nesta descrição e nas reivindicações abaixo, um "alvo de soltar representante" é definido como um módulo associado com a mesma sessão que da fonte de soltar, e age como um intermediário entre a fonte de soltar e o alvo de soltar. Um alvo de soltar represen- tante pode simular funcionalidade de um alvo de soltar efetivo, para facilitar que uma opera- ção de arrastar e soltar por uma sessão de servidor de terminal. Em algumas modalidades, um alvo de soltar representante é um componente de sessão de servidor de terminal, que simula a funcionalidade alvo de soltar e participa no gerenciamento de uma sessão de ser- vidor de terminal.
Nesta descrição e nas reivindicações abaixo, uma "fonte de soltar representante" é definida como um módulo associado com a mesma sessão, como o alvo de soltar, e age como um intermediário entre a fonte de soltar e o alvo de soltar. Uma fonte de soltar repre- sentante pode simular a funcionalidade de uma fonte de soltar efetiva, para facilitar uma operação de arrastar e soltar por uma sessão de servidor de terminal. Em algumas modali- dades, uma fonte de soltar representante é um componente de sessão de servidor de termi- nal que simula a funcionalidade de fonte de soltar e participa no gerenciamento de uma ses- são de servidor de terminal.
Nesta descrição e nas reivindicações abaixo, as mensagens trocadas pela comuni- cação de rede, para facilitar as operações de arrastar e soltar são geralmente definidas da seguinte maneira:
mensagem START_DRAG_DROP: uma indicação de um alvo de soltar represen- tante para uma fonte de soltar representante, para iniciar um "loop" modal de arrastar e sol- tar. A mensagem pode incluir os nomes e IDs dos dados de formato que podem ser propor- cionados. mensagem START_DRAG_DROP_RESPONSE: uma indicação de uma fonte de soltar representante que o Ioop molda de arrastar e soltar começou para o alvo de soltar.
mensagem UPDATE_DROP_EFFECT: indica o efeito de soltar atualizado para um alvo de soltar. Isto é, o que o alvo de soltar gostaria de fazer com os dados.
mensagem STOP_DRAG_DROP: uma indicação do alvo de soltar representante para a fonte de soltar representante para interromper a operação de arrastar e soltar.
mensagem DO_DRAG_DROP: uma indicação do alvo de soltar representante para a fonte de soltar representante para iniciar uma operação de soltar. Uma mensagem de sol- tar, indicativa de uma mensagem DO_DRAG_DROP, enviada pela comunicação de rede, pode ser encaminhada por Ligação e Embutimento de Objeto ("OLE") para o alvo de soltar.
Em resposta a um mensagem de soltar, o alvo de soltar pode solicitar um objeto de dados representante e chamar um método GetData.
mensagem DO_DRAG_DROP_RESPONSE: uma indicação da fonte de soltar re- presentante que a operação de arrastar e soltar está completa (por exemplo, enviada em resposta à mensagem DO_DRAG_DROP).
mensagem FORMAT_DATA_REQUEST: enviada por um objeto de dados repre- sentante para o alvo de soltar representante, quando dados são pedidos pelo alvo de soltar.
mensagem FORMAT_DATA_RESPONSE: enviada para um alvo de soltar repre- sentante para o objeto de dados representante e contém quaisquer dados selecionados.
Outras mensagens podem ser também trocadas por uma rede para facilitar as ope- rações de arrastar e soltar.
A Figura 1A ilustra um exemplo de arquitetura de computador 100, que facilita o ar- rastar e soltar de um objeto de um módulo local para um módulo remoto. O sistema compu- tadorizado 101 (por exemplo, um cliente) e o sistema computadorizado 111 (por exemplo, um servidor). Os sistemas computadorizados 101 e 111 podem ser conectados a uma rede, tal como, por exemplo, uma Rede de Área Local ("LAN"), uma Rede de Longa Distância ("WAN") ou mesmo a Internet. Desse modo, os vários componentes nos sistemas computa- dorizados 101 e 111 podem receber dados e enviar dados entre si, bem como de outros componentes conectados à rede. Conseqüentemente, os componentes podem criar dados relacionados com mensagem e dados relacionados com mensagem de troca pela rede (por exemplo, datagramas de Protocolo de Internet ("IP") e outros protocolos de camadas de nível mais alto, que utilizam datagramas IP, tais como, Protocolo de Controle de Transmis- são ("TCP"), Protocolo de Área de Trabalho Remota ("RDP"), Protocolo de Transferência de Hipertexto ("HTPP"), Protocolo de Transferência de Correio Simples ("SMTP"), Arquitetura de Computação Independente ("ICA"), etc.).
Como ilustrado, um sistema computadorizado 101 inclui a aplicação 102, o módulo de cliente 106, e a interface de usuário 104, e o sistema computadorizado 111 inclui a apli- cação 112 e o módulo de servidor 116. O sistema computadorizado 101 e o sistema compu- tadorizado 111 ficam em comunicação entre si por uma sessão de servidor de terminal 131 (por exemplo, uma sessão RDP), estabelecida por uma rede. O componente de cliente 106 e o componente de servidor 116 podem interoperar para facilitar o gerenciamento da sessão de servidor de terminal 131. Por exemplo, a transferência de entrada de usuário, recebida na interface de usuário 104 do sistema computadorizado 101 para o sistema computadori- zado 111, encaminhando a entrada de usuário para as aplicações remotas adequadas no sistema computadorizado 111, recebendo a saída das aplicações remotas no sistema com- putadorizado 111, transferindo a saída de aplicação remota do sistema computadorizado 111 para o sistema computadorizado 101, e transmitindo a saída de aplicação remota na interface de usuário 104. Desse modo, para aplicações remotas (da perspectiva da interface de usuário 104), a entrada é recebida e a saída apresentada ao sistema computadorizado 101, enquanto que o processamento ocorre de fato no sistema computadorizado 111.
Canais virtuais podem ser usados para estender a funcionalidade da sessão de servidor de terminal (por exemplo, por extensão do protocolo RDP), permitindo que as apli- cações transfiram dados específicos de aplicação por uma sessão de servidor de terminal (por exemplo, uma conexão RDP). Desse modo, além dos dados de entrada e saída, outros tipos de dados podem ser trocados pelos canais virtuais. Por exemplo, o canal virtual 121 pode ser um canal configurado para transferir objetos de arrastar e soltar do sistema compu- tadorizado 101 para o sistema computadorizado 111. O canal virtual 121 pode conectar uma cadeia de arrastar e soltar no componente de cliente 106 em uma cadeia de arrastar e soltar no componente de servidor 116, e vice-versa. Conseqüentemente, o componente de cliente 106 e o componente de servidor 116 podem interoperar para arrastar e soltar dados pelo canal virtual 121, entre as aplicações adequadas no sistema computadorizado 101 e no sis- tema computadorizado 111.
A Figura 1B ilustra uma janela de área de trabalho 123 exemplificativa, ilustrando uma operação de arrastar e soltar de um módulo local para um módulo remoto. Como ilus- trado, a janela de área de trabalho 123 é uma parte de interface de usuário 104 e inclui uma janela de aplicação 102W e uma área de trabalho remota 113. Ajanela de aplicação 102W corresponde à aplicação 102 e é configurada para receber entrada de usuário para a aplica- ção 102 e apresentar saída da aplicação 102 para um usuário. A área de trabalho remota 113 inclui janelas de aplicação para quaisquer aplicações que estão sendo afastadas do sistema computadorizado 111. Por exemplo, a janela de aplicação 112W corresponde à a- plicação 112 e é configurada para receber entrada de usuário para a aplicação 112 e apre- sentar saída da aplicação 112 para um usuário.
As Figuras 2A - 2C ilustram um fluxograma de um método exemplificativo 200 para arrastar e soltar um objeto de um módulo local para um módulo remoto. O método 200 vai ser descrito com relação aos componentes e aos dados na arquitetura de computador 100.
O método 200 inclui um ato de selecionar um objeto de arrastar e soltar de uma ja- nela de aplicação local (ato 201). Por exemplo, um usuário do sistema computadorizado 101 pode selecionar o objeto 126 de dentro da janela de aplicação 102W. O objeto 126 pode ser virtualmente qualquer objeto selecionável no sistema computadorizado, tal como, por exem- plo, uma parte de dados de texto, gráficos ou de som, uma célula de planilha eletrônica, uma entrada de base de dados, uma mensagem eletrônica, etc.
O método 200 inclui um ato de modificar um cursor da janela da área de trabalho, para representar virtualmente que um objeto de arrastar e soltar está selecionado (ato 202). Por exemplo, após seleção do objeto 126, o cursor 133 pode ser modificado para incluir um indicador de efeito de soltar 134. Os efeitos de soltar podem incluir qualquer de mover, ligar, criar uma hiperligação para, e criar um atalho para, o objeto selecionado. O cursor 133 pode ser modificado ou suplementado em diferentes modos, para indicar diferentes efeitos de soltar. Por exemplo, o indicador de efeito de soltar 134 pode ser exibido para indicar que o efeito de soltar é copiar.
Um efeito de soltar pode ser selecionado dos efeitos de soltar disponíveis para uma aplicação. Como o cursor 133 oscila entre as diferentes janelas da janela de trabalho 123, o indicador de efeito de soltar apresentado pode variar. Por exemplo, ainda que o cursor 133 esteja dentro dos limites da janela de aplicação 102W, um efeito de soltar padrão para a aplicação 102 (por exemplo, de copiar) pode ser exibido. Quando o cursor 133 está fora dos limites de qualquer janela de aplicação, um efeito de soltar padrão para a janela de área de trabalho 123 (por exemplo, o sistema operacional) pode ser exibido. Por exemplo, para a janela de área de trabalho 123, a funcionalidade de arrastar e soltar pode não ser suportada de modo algum, e, desse modo, o cursor 133 é transformado no símbolo "não permitido", quando nessa área de interface de usuário 104. Ao introduzir a janela de aplicação 112W, um efeito de soltar padrão para a aplicação 112 (por exemplo, de copiar) pode ser exibido.
O método 200 inclui um ato de um componente de cliente detectando que o cursor da janela da área de trabalho foi movimentado de fora para dentro dos limites de uma janela de área de trabalho, para uma aplicação remota (ato 203). Por exemplo, o componente de cliente 106 pode detectar que o cursor 133 foi movimentado de fora para dentro dos limites da janela de área de trabalho 112W. (A linha tracejada na Figura 1B indica a rota do cursor 133, a partir da janela de aplicação 102W, pela janela de área de trabalho 123 e área de trabalho remota 113, para a janela de aplicação 112W.)
Os atos 201, 202 e 203 podem ser incluídos na preparação de uma operação de ar- rastar e soltar, para transferir um objeto de uma aplicação local para uma aplicação remota. Quando o cursor 134 está rondando a janela de aplicação 112W, o componente de cliente 106 pode invocar método DragEnter. Por um método DragEnter, o componente de cliente 106 (agindo como um representante de alvo de soltar) pode indicar de volta para a aplicação 102, ou pode aceitar o objeto 126. Os parâmetros de um método DragEnter podem ser do formato:
HRESULT DragEnter(
IDataObject*pDataObject, // Source data object (por exemplo, objeto 126).
DWORDdwKeyState1 // Keyboard and mouse state.
POINTLpt,// Cursor position.
DWORD*pdwDropEffect // Resultant drop-effect.
)
Por um método DragEnter1 um alvo (ou um alvo representante) pode indicar se vai viável aceitar um possível soltar por atualização do parâmetro pdwDropEffect. Esse parâme- tro pode conter inicialmente o conjunto de efeitos de soltar que a fonte permite. O efeito de soltar resultante é baseado, em parte, nos formatos supridos pelo objeto, e pode ser influenci- ado pelo estado atual do teclado e do mouse, e, potencialmente, ainda a posição do mouse.
Subseqüentemente, o componente de cliente 106 pode enviar uma mensagem START_DRAG_DROP pelo canal virtual 121 (por exemplo, um canal virtual de clipboard) para o componente de servidor 116. A mensagem START_DRAG_DROP pode incluir os nomes de formatos descrevendo o conteúdo do objeto 126 e os efeitos de soltar habilitados da aplicação 102. Após essa mensagem ter sido enviada, um manipulador no sistema com- putadorizado 101 é informado (por exemplo, por um evento de sistema operacional) que uma operação de arrastar e soltar foi iniciada. Em resposta a esse evento, o manipulador de entrada pode desabilitar a distorção do teclado e introduzir sincronização. Para que se tenha certeza de que os pedidos para os dados de formato podem ser satisfeitos, antes de ocor- rência de soltar, o objeto 126 pode ser armazenado.
Quando a mensagem START_DRAG_DROP é recebida no componente de servidor 116, os nomes de formatos descrevendo o conteúdo do objeto 126 e os efeitos de soltar habilitados da aplicação são extraídos. Em resposta, o objeto de dadas representante 136 é criado e uma janela para o componente de servidor 116 é criada. A janela pode ser feita transparente (ou de outro modo oculta) e pode ser de um tamanho muito pequeno (por e- xemplo, um tamanho de 1 χ 1 pixel). A janela é focalizada e elevada à parte de topo da or- dem z. Desse modo, a entrada pode ser dirigida (anexada) à janela, para dirigir a entrada para o componente de servidor 116. Como tal, a entrada pode ser dirigida para o componen- te de servidor 116, sem alterar significativamente a janela de área de trabalho 123. Por e- xemplo, uma janela transparente 1 χ 1 é potencialmente imperceptível por um usuário.
Em resposta a evento de abaixamento de mouse recebido, o componente de servi- dor 116 (a fonte de soltar representante) invoca um método DoDragDrop. Os parâmetros de um método DoDragDrop podem ser do formato: HRESULT DoDragDrop(
IDataObject* pDataObject, // Source data object.
IDropSource* pDropSource,// Drop source interface.
DWORD dwAIlowedDropEffects, // Allowed drop-effects.
DWORD* pdwFinaIDropEffect, // Final drop-effect.
)
Um método DoDragDrop pode ser incluído em um Ioop modal, usado para facilitar uma operação de arrastar e soltar. Geralmente, para iniciar a operação de arrastar e soltar, um componente chama DoDragDrop com os parâmetros adequados. O DoDragDrop captu- ra o mouse usando uma API (Interface de Programa de Aplicação) SetCapture e depois in- troduz um laço.
Para encaminhar entrada para o componente de servidor 116, um manipulador de entrada envia um evento de abaixamento de mouse para o componente de cliente 106, e porque o mouse foi clicado na janela (potencialmente pequena e transparente) para o com- ponente de servidor 116, o evento de abaixamento de mouse termina até ser enviado para a fila de entrada do componente de servidor 116. A recepção do evento de abaixamento de mouse pode ser usada para configurar uma janela escondida de Ligação e Embutimento de Objeto ("OLE"), para receber as mensagens de evento de mouse de todo o sistema. A re- cepção da START_DRAG_DROP_RESPONSE também dispara a comutação de um indica- dor booleano, que os métodos no componente de cliente 106 checam antes da execução. Isso aumenta a probabilidade de enviar mensagens, quando o componente de servidor 116 está ativo.
Enquanto o cursor 133 esteja sendo arrastado pela janela de aplicação 112W, um método DragOver é chamado. Os parâmetros de um método DragOver podem ser do formato:
HRESULT DragOver(
DWORDdwKeyState, // Keyboard and mouse state.
POINTLpt,// Cursor position.
DWORD* pdwDropEffect // Resultant drop-effect.
)
Durante as chamadas para DragOver, as atuais posição do mouse, estado do bo- tão do mouse e estado do teclado podem ser checado para variações. Se variações são detectadas, o manipulador de entrada para o componente de cliente 106 envia uma mensa- gem de movimentação de mouse adequada, de botão de mouse para cima ou para baixo, ou de teclado para cima ou para baixo para o componente de servidor 116.
O componente de servidor 166 (a fonte de soltar representante) pode chamar con- tinuamente um método QueryContinueDrag. Os parâmetros de um método QueryContinue- Drag podem ser do formato:
HRESULT QueryContinueDrag(
BOOLfEscapePressed, // TRUE if ESC has been pressed.
DWORD dwKeyState // Keyboard and mouse state.
O método QueryContinueDrag pode ser usado para informar a fonte de soltar (ou a fonte de soltar representante) do estado atual do teclado e do mouse. Com base nessa en- trada, a fonte de soltar (ou fonte de soltar representante) pode decidir continuar com o arras- tar, cancelar o arrastar, ou permitir a ocorrência de soltar. A fonte de soltar indica a sua de- cisão pelo valor de retorno HRESULT. Por exemplo, S_OK pode indicar continuar, DRAGDROP_S_CANCEL pode indicar cancelar e DRAGDROP_S_DROP pode indicar permitir o soltar. Enquanto o cursor 133 está rondando a janela de aplicação 112W, Query- ContinueDrag pode retornar S_OK, porque uma operação de cancelar ou soltar ainda não ocorreu.
O componente de servidor 116 pode também invocar um método GiveFeedBack1 para retornar o efeito de soltar (movimentar, copiar, ligar, etc.) da aplicação 112 para o com- ponente de cliente 106. Os parâmetros de um método GiveFeedback podem ser do formato:
HRESULT GiveFeedback(
DWORDdwDropEffect // Current target (por exemplo, aplicação 112)
// drop-effect.
) Geralmente, um método GiveFeedback informa uma fonte de soltar (ou fonte de soltar representante) do efeito de soltar atual, de modo que possa propiciar uma realimenta- ção visual adequada. A realimentação visual é indicada pelo valor de retorno HRESULT. Um valor de S_OK significa que a fonte ajusta adequadamente o cursor, enquanto que DRAGDROP_S_USEDEFAULTCURSORS indica que a fonte está satisfeita com o uso dos cursores padrões proporcionados por OLE.
Quando o componente de servidor 116 chama GiveFeedback, o efeito de soltar da aplicação 112 é enviado do componente de servidor 116 para o componente de cliente 106 pelo canal virtual 121, em uma mensagem UPDATE_DROP_EFFECT. O componente de cliente 106 armazena o efeito de soltar e o retorna para a aplicação 102 (por exemplo, invo- cando um método DragOver).
Com base no estado do mouse e do teclado no sistema computadorizado 101, a aplicação 102 pode decidir eventualmente cancelar a operação de arrastar ou deixar que ocorra um soltar. Desse modo, em algumas modalidades, uma operação de arrastar é can- celada (e, desse modo, não ocorre qualquer soltar). Se um cancelamento ocorre, o compo- nente de cliente 106 (o alvo de soltar representante) é informado pior um método DragLea- ve, por exemplo, do formato:
HRESULT DragLeave();
Um manipulador de eventos para o componente de servidor 116 pode armazenar o resultado de cancelar, indicado em uma mensagem STOP_DRAG_DROP. Desse modo, na vez seguinte em que QueryContinueDrag é chamado, retorna DRAGDROP_S_CANCEL, fazendo com que a operação de arrastar termine no sistema computadorizado 111.
Em outras modalidades, ocorre um soltar. Conseqüentemente, o método 200 inclui um ato de iniciar uma operação de soltar (ato 204). Por exemplo, a aplicação 102 pode inici- ar uma operação de soltar para transferir o objeto 126 para a aplicação 112. Um usuário pode manipular um dispositivo de entrada para provocar início de um soltar. Por exemplo, um usuário pode liberar o botão esquerdo do mouse, enquanto o cursor 133 está rondando a janela de aplicação 112W.
O método 200 inclui um ato de receber uma notificação de soltar, indicando que um objeto de arrastar e soltar vai ser transferido para uma aplicação remota (ato 205). Por e- xemplo, o componente de cliente 106 pode receber uma notificação de arrastar, indicando que o objeto 126 vai ser transferido para a aplicação 112, como parte de uma operação de arrastar e soltar pendente. O método 200 inclui um ato de enviar um pedido para transferir o objeto de arrastar e soltar com a localização das coordenadas da janela do cursor da área de trabalho (ato 206). Por exemplo, em resposta ao recebimento de uma notificação de sol- tar, o componente de cliente 106 pode enviar uma mensagem DO_DRAG_DROP para o componente de servidor 116, para pedir a transferência do objeto 126 para a aplicação 112. A mensagem DO_DRAG_DROP pode ser enviada pelo canal virtual 121 e pode incluir a localização das coordenadas do cursor 133.
O método 200 inclui um ato de receber um pedido para transferir o arrastar e soltar e a localização de coordenadas do cursor da janela da área de trabalho (ato 207). Por e- xemplo, o componente de servidor 116 pode receber a mensagem DO_DRAG_DROP pe- dindo a transferência do objeto 126 para a aplicação 112. Quando a mensagem DO_DRAG_DROP chega no componente de servidor 116, o manipulador de eventos arma- zena uma indicação de que um soltar vai ocorrer. Desse modo, quando QueryContinueDrag é chamado a seguir, o QueryContinueDrag retorna a DRAGDROP_DROP (indicativa de que um soltar vai ocorrer). No entanto, antes do retorno a esse valor, uma mensagem GIVE_FOCUS pode ser enviada para um componente de servidor 106.
Na recepção da mensagem GIVE_FOCUS, o componente de cliente 106 pode ob- ter um foco de entrada chamando uma API SetForegroundWindow.
O componente de servidor 116 pode também enviar a mensagem DO_DRAG_DROP_RESPONSE para o componente de cliente 106 pelo canal virtual 121.
O método 200 inclui um ato de encaminhar a notificação de transferência do objeto de arrastar e soltar para a aplicação correspondente (ato 208). Por exemplo, o componente de servidor 116 pode encaminhar a notificação de soltar para o objeto 126 para a aplicação 112, com base na localização das coordenadas do cursor 133 (por exemplo, rondando a janela de aplicação 112W). O método 200 inclui um ato de receber uma notificação de trans- ferência de objeto de arrastar e soltar (ato 209). Por exemplo, a aplicação 112 pode receber a notificação de soltar 126 do componente de servidor 116.
O método 200 inclui um ato de pedir que o objeto de arrastar e soltar (ato 210). Por exemplo, a aplicação 112 pode pedir o objeto 126 do componente de servidor 116. O méto- do 200 inclui um ato de receber um pedido para o objeto de arrastar e soltar da aplicação correspondente (ato 211). Por exemplo, o componente de servidor 116 pode receber um pedido para o objeto 126 da aplicação 112. O componente de servidor 116 pode detectar a chamada GetData no objeto representante 136.
O método 200 inclui um ato de enviar o pedido para o objeto de arrastar e soltar pa- ra o componente de cliente (ato 212). Por exemplo, o componente de servidor 116 pode enviar uma mensagem FORMAT_DATA_ REQUEST para o componente de cliente 106 pelo canal virtual 121. A mensagem FORMAT_DATA_ REQUEST pede o objeto 126 para a apli- cação 102. O método 200 inclui um ato de receber um pedido para o objeto de arrastar e soltar do componente de servidor (ato 213). Por exemplo, o componente de cliente 106 pode receber a mensagem FORMAT_DATA_ REQUEST do componente de servidor 116 pelo canal virtual 121.
O método 200 inclui um ato de encaminhar o pedido para o objeto de arrastar e sol- tar para a aplicação local (ato 214). Por exemplo, o componente de cliente 106 pode enca- minhar o pedido para o objeto 126 para a aplicação 102. O método 200 inclui um ato de re- ceber um pedido para o objeto de arrastar e soltar (ato 215). Por exemplo, a aplicação 102 pode receber o pedido para o objeto 126.
Em algumas modalidades, o manipulador de eventos para a mensagem FORMAT_DATA_REQUEST usa uma referência para um objeto de arrastar e soltar arma- zenado em um método DragEnter para executar uma chamada GetCaII. Quando os dados de formato tiverem sido recuperados, são codificados adequadamente.
O método 200 inclui um ato de enviar o objeto de arrastar e soltar (216). Por exem- plo, após os formatos retornados e os efeitos de soltar serem recebidos, a aplicação 102 pode enviar o objeto 126 para o componente de cliente 106. O método 200 inclui um ato de receber o objeto de arrastar e soltar da aplicação local (ato 217). Por exemplo, o componen- te de cliente 217 pode receber o objeto 126 da aplicação 102.
O método 200 inclui um ato de enviar o objeto de arrastar e soltar para o compo- nente de servidor (ato 218). Por exemplo, o componente de cliente 106 pode enviar uma mensagem FORMAT_DATA_RESPONSE, incluindo os dados do objeto 126, para o compo- nente de servidor 116 pelo canal virtual 121. O método 200 inclui um ato de receber o objeto de arrastar e soltar do componente de cliente (ato 219). Por exemplo, o componente de ser- vidor 116 pode receber a mensagem FORMAT_DATA_RESPONSE, incluindo os dados do objeto 126, do componente de cliente 106 pelo canal virtual 121.
O método 200 inclui um ato de encaminhar o objeto de arrastar e soltar para a apli- cação remota (ato 220). Por exemplo, o componente de servidor 116 pode encaminhar da- dos do objeto 126 para a aplicação 112. O método 200 inclui um ato de receber o objeto de arrastar e soltar (ato 221). Por exemplo, a aplicação 112 pode receber dados do objeto 126. Conseqüentemente, dependendo do efeito de soltar selecionado, os dados do objeto 126 são movimentados, copiados, ligados, hiperligados ou tomam um atalho da aplicação 102 na aplicação 112.
Em algumas modalidades, dados codificados adequadamente são subseqüente- mente transmitidos por fio em uma mensagem FORMAT_DATA_RESPONSE. Na recepção dessa mensagem FORMAT_DATA_RESPONSE no componente de servidor 116, um mani- pulador de eventos adequado é chamado e os dados encaminhados são extraídos e decodi- ficados. Uma vez que o manipulador de eventos completa a execução, os dados formatados são retornados para o alvo de soltar, resultando no método Drop do alvo de soltar local sen- do completado.
Quando a chamada Drop está terminada, o Ioop DoDragDrop termina e o efeito de soltar é retornado (por exemplo, para o componente de servidor 116). O objeto de arrastar e soltar é consultado para o PerformedDropEffect e o LogicaIPerformedDropEffect. Esses dois formatos, bem como o efeito soltar e o DoDragDrop HRESULT são enviados para o compo- nente de cliente 106 local em uma mensagem DO_DRAG_DROP_RESPONSE. O compo- nente de cliente 116 retorna para o seu método Drop representante. Ao receber a mensa- gem DO_DRAG_DROP_RESPONSE, um manipulador de eventos no componente de clien- te 106 armazena os resultados. O método Drop do componente de cliente 116 continua a execução, inicializando o objeto 126 com os formatos retornados, e retornando o efeito sol- tar e o HRESULT para o subsistema OLE.
O componente de cliente 106 (o alvo de soltar representante) e o componente de servidor 116 (a fonte de soltar representante) podem ser configurados de vários diferentes modos, para facilitar a implementação do método 200.
Por exemplo, o componente de cliente 106 (o alvo de soltar representante) pode ser configurado para indicar quando um Ioop modal de arrastar e soltar vai iniciar. O compo- nente de cliente 106 pode enviar uma mensagem START_DRAG_DROP pelo canal virtual 121 para o componente de servidor 116. Quando a START_DRAG_DROP é processada, o componente de servidor 116 (a fonte de soltar representante) pode enviar um Ioop de mode- lo de arrastar e soltar para a aplicação 112 (o alvo de soltar). O componente de cliente 106 pode também ser configurado para enviar listas de formatos que a aplicação 102 (a fonte de soltar) pode suportar. Um dos parâmetros para um método DragEnter é um ponteiro para o objeto de dados contendo os dados que a aplicação 102 são capazes de proporcionar. Usando um enumerador de formatos, os nomes de forma- tos são extraídos desse objeto de dados e depois enviados para uma mensagem START_DRAG_DROP, de modo que um objeto de dados representante possa ser criado pelo componente de servidor 116.
O componente de cliente 106 pode ser também configurado para atualizar a posi- ção do mouse remoto, o estado da tecla e o estado do teclado. Pouco antes da partida do loop modal de arrastar e soltar, o componente de servidor 116 pode enviar uma mensagem START_DRAG_DROP_RESPONSE pelo canal virtual 121. Quando essa mensagem é re- cebida pelo componente de cliente 106, o método DragOver do componente de cliente 106 é liberado para enviar atualizações da posição do mouse atual, estado básico do mouse e estado do teclado para o componente de servidor 116. Os estados básicos para ambos o mouse e o teclado são obtidos dos parâmetros passados para um método DragOver. Essas atualizações compensam a aplicação, tendo foco de entrada e captura de mouse.
O componente de cliente 106 pode ser também configurado para retornar o último efeito de soltar recebido do componente de servidor 116. O componente de servidor 116 pode enviar mensagens UPDATE_DROP_EFFECT para componente de cliente 196, quan- do a aplicação 112 muda o efeito de soltar. Como parte do processamento DragOver, os efeitos de soltar atualizados são retornados para o subsistema OLE do sistema computado- rizado 101, para informar a aplicação 102 do efeito de soltar atual.
O componente de cliente 106 pode também ser configurado para atualizar o com- ponente de servidor 116 relativo ao estado da operação de arrastar atual. Se um método DragLeave tiver sido chamado, então a aplicação 102 decide cancelar a operação de arras- tar e soltar. Conseqüentemente, a aplicação 112 deve fazer o mesmo e chamar o seu méto- do DragLeave. O componente de cliente 106 pode retransmitir as informações adequadas para o componente de servidor 116, para fazer com que a aplicação 112 chame o seu mé- todo DragLeave.
O componente de cliente 106 também pode ser configurado para armazenar um ponteiro para o objeto 126, se ocorrer um soltar. Se ocorrer um soltar, então a aplicação 12 pode solicitar o objeto 126. Para ajudar a garantir que o objeto 126 pode ser retornado, o componente de cliente 106 pode armazenar um ponteiro para o objeto 126, recebido na chamada Drop. Desse modo, quando um pedido para o objeto é recebido na forma da men- sagem FORMAT_DATA_REQUEST, o componente de cliente 116 pode suprir os dados de formato adequados por execução de uma chamada GetData no objeto salvo 126, e retornar os dados em uma mensagem FORMAT_DATA_RESPONSE. O componente de servidor 116 pode ser configurado para criar um objeto de dados representante anunciando os nomes de formatos corretos. Um dos parâmetros da mensa- gem START_DRAG_DROP é uma lista de formatos que a aplicação 112 é capaz de propor- cionar. Antes do Ioop modal remoto ser iniciado, um objeto de dados representante é criado e ocupado com esses nomes de formatos. O objeto de dados criado é então passado para o subsistema OLE do sistema computadorizado 11, como um parâmetro na chamada Do- DragDrop. Desse modo, os alvos de soltar dentro da sessão remota vão ser capazes de consultar os formatos e recuperar os dados, se ocorrer um soltar.
O componente de servidor 116 pode ser também configurado para retransmitir o e- feito de soltar atual para o componente de cliente 106. O efeito de soltar que a aplicação 112 retorna para o subsistema OLE do sistema computadorizado 111 é passado para o componente de cliente 106, como parte de uma chamada GiveFeedback. Esse efeito de soltar é enviado pelo canal virtual 121 para o sistema computadorizado 101 em uma men- sagem UPDATE_DROP_EFFECT, de modo que o componente de cliente 106 pode retornar esse efeito de soltar, quando o seu método DragOver é chamado.
O componente de servidor 116 pode ser também configurado para iniciar um can- celar ou um soltar, quando instruído pelo componente de cliente 106. Quando uma operação de soltar ou cancelar ocorre no sistema computadorizado 101, o método Drop ou DragLeave do componente de cliente 106 pode ser chamado. Quando isso acontece, uma mensagem é enviada para o componente de servidor 116, de modo que na vez seguinte QueryContinue- Drag é chamado, o HRESULT correto pode ser retornado para o subsistema OLE do siste- ma computadorizado 111. Se a mensagem STOP_DRAG_DROP for recebida, então DRAGDROP_S_CANCEL é retornada. DRAGDROP_S_DROP é retornada se a mensagem D0_DRAG_S_DROP for recebida. De outro modo, S_OK é retornada e o Ioop modal conti- nua.
O objeto representante 136 pode ser criado, quando uma mensagem START_DRAG_DROP for recebida. O objeto representante 136 reproduz essencialmente o objeto 126 por retorno dos mesmos formatos anunciados pelo objeto 126. Quando dados são pedidos do objeto representante 136, envia uma mensagem FORMAT_DATA_REQUEST para o sistema computadorizado 101. O componente de clien- te 106 pode depois recuperar os dados do objeto 126 e enviar os dados de volta em uma mensagem FORMAT_DATA_RESPONSE.
Conseqüentemente, as modalidades da presente invenção podem facilitar o arras- tar e soltar dos objetos de um módulo remoto para um módulo local.
A Figura 3A ilustra uma arquitetura de computador 300 exemplificativa, que facilita o arrastar e soltar de um objeto, de um módulo de área de trabalho remoto para um módulo de área de trabalho local. O sistema computadorizado 301 (por exemplo, um cliente) e o sistema computadorizado 311 (por exemplo, um servidor). Os sistemas computadorizados 301 e 311 podem ser conectados a uma rede, tal como, por exemplo, uma Rede de Área Local ("LAN"), uma Rede de Longa Distância ("WAN") ou mesmo a Internet. Desse modo, os vários componentes nos sistemas computadorizados 301 e 311 podem receber dados e enviar dados entre si, bem como de outros componentes conectados à rede. Conseqüente- mente, os componentes podem criar dados relacionados com mensagem e dados relacio- nados com mensagem de troca pela rede (por exemplo, datagramas de Protocolo de Inter- net ("IP") e outros protocolos de camadas de nível mais alto, que utilizam datagramas IP, tais como, Protocolo de Controle de Transmissão ("TCP"), Protocolo de Área de Trabalho Remota ("RDP"), Protocolo de Transferência de Hipertexto ("HTPP"), Protocolo de Transfe- rência de Correio Simples ("SMTP"), Arquitetura de Computação Independente ("ICA"), etc.).
Como ilustrado, o sistema computadorizado 301 inclui a aplicação 302, o módulo de cliente 306 e uma interface de usuário 304, e o sistema computadorizado 111 inclui a aplicação 312 e o módulo de servidor 316. O sistema computadorizado 301 e o sistema computadorizado 311 ficam em comunicação entre si pela sessão de servidor de terminal 331 (por exemplo, uma sessão RDP) estabelecida pela rede. O componente de cliente 306 e o componente de servidor 316 podem interoperar para facilitar o gerenciamento da sessão de servidor de terminal 331. Por exemplo, transferir a entrada de usuário recebida na inter- face de usuário 304 do sistema computadorizado 301 para o sistema computadorizado 311, encaminhar a entrada de usuário para aplicações remotas adequadas no sistema computa- dorizado 311, receber a saída de aplicações remotas para o sistema computadorizado 311, transferir saída de aplicação remota do sistema computadorizado 311 para o sistema com- putadorizado 301, e transmitir a saída da aplicação remota na interface de usuário 304. Desse modo, para aplicações remotas (da perspectiva da interface de usuário 304), a entra- da é recebida e a saída apresentada no sistema computadorizado 201, enquanto que o pro- cessamento ocorre de fato no sistema computadorizado 311.
O canal virtual 321 pode ser um canal configurado para transferir os objetos de ar- rastar e soltar do sistema computadorizado 311 para o sistema computadorizado 301. O canal virtual 321 pode conectar uma cadeia de arrastar e soltar no componente de cliente 306 a uma cadeia de arrastar e soltar no componente de servidor 316, e vice-versa. Conse- qüentemente, o componente de cliente 306 e o componente de servidor 316 podem intero- perar para transferir dados de arrastar e soltar pelo canal virtual 321, entre as aplicações adequadas no sistema computadorizado 301 e no sistema computadorizado 311.
A Figura 3B ilustra uma janela de área de trabalho 323 exemplificativa, ilustrando uma operação de arrastar e soltar de um módulo local para um módulo remoto. Como ilus- trado, a janela de área de trabalho 323 é uma parte da interface de usuário 304 e inclui a janela de aplicação 302W e a área de trabalho remota 313. Ajanela de aplicação 302W cor- responde à aplicação 302 e é configurada para receber a entrada de usuário para a aplica- ção 302 e apresentar saída da aplicação 302 para um usuário. A área de trabalho remota 313 inclui as janelas de aplicações para quaisquer aplicações que estão sendo afastadas do sistema computadorizado 311. Por exemplo, a janela de aplicação 312W corresponde à a- plicação 312 e é configurada para receber entrada de usuário para a aplicação 312 e apre- sentar a saída da aplicação 312 para um usuário.
As Figuras 4A - 4C ilustram um fluxograma de um método exemplificativo 400 para o arrastar e soltar de um objeto de um módulo remoto para um módulo local. O método 400 vai ser descrito com relação aos componentes e dados na arquitetura de computador 300.
O método 400 inclui um ato de selecionar um objeto de arrastar e soltar de uma ja- nela de aplicação remota (ato 401). Por exemplo, um usuário do sistema computadorizado 301 pode selecionar o objeto 326 de dentro da janela de aplicação 312W. O objeto 326 pode ser virtualmente qualquer objeto selecionável no sistema computadorizado, tal como, por exemplo, uma parte de dados de texto, gráficos ou de som, uma célula de planilha eletrôni- ca, uma entrada de base de dados, uma mensagem eletrônica, etc.
O método 400 inclui um ato de modificar um cursor da janela da área de trabalho, para representar virtualmente que um objeto de arrastar e soltar está selecionado (ato 402). Por exemplo, após seleção do objeto 326, o cursor 333 pode ser modificado para incluir um indicador de efeito de soltar 334. Os efeitos de soltar podem incluir qualquer de mover, ligar, criar uma hiperligação para, e criar um atalho para, o objeto selecionado. O cursor 333 pode ser modificado ou suplementado em diferentes modos, para indicar diferentes efeitos de soltar. Por exemplo, o indicador de efeito de soltar 334 pode ser exibido para indicar que o efeito de soltar é movimentar.
Um efeito de soltar pode ser selecionado dos efeitos de soltar disponíveis para uma aplicação. Como o cursor 333 oscila entre as diferentes janelas da janela de trabalho 323, o indicador de efeito de soltar apresentado pode variar. Por exemplo, ainda que o cursor 333 esteja dentro dos limites da janela de aplicação 312W, um efeito de soltar padrão para a aplicação 312 (por exemplo, de movimentar) pode ser exibido. Quando o cursor 333 está fora dos limites de qualquer janela de aplicação, um efeito de soltar padrão para a janela de área de trabalho 323 (por exemplo, o sistema operacional) pode ser exibido. Por exemplo, para a janela de área de trabalho 323, a funcionalidade de arrastar e soltar pode não ser suportada de modo algum, e, desse modo, o cursor 333 é transformado no símbolo "não permitido", quando nessa área de interface de usuário 304. Ao introduzir a janela de aplica- ção 302W, um efeito de soltar padrão para a aplicação 302 (por exemplo, de movimentar) pode ser exibido.
O método 400 inclui um ato de um componente de cliente detectando que o cursor da janela da área de trabalho foi movimentado de fora para dentro dos limites de uma janela de aplicação remota (ato 403). Por exemplo, o componente de cliente 306 pode detectar que o cursor 333 foi movimentado de fora para dentro dos limites da janela de área de trabalho 302W. (A linha tracejada na Figura 3B indica a rota do cursor 333, a partir da janela de apli- cação 312W, pela janela de área de trabalho 313 e janela de área de trabalho 313, para a janela de aplicação 302W.)
O método 400 inclui um ato de enviar uma mensagem indicando que o cursor da janela da área de trabalho foi movimentado (ato 404). Por exemplo, o componente de cliente 306 pode enviar uma mensagem MOUSE_HAS_LEFT para o componente de servidor 316 pelo canal virtual 321. A mensagem MOUSE_HAS_LEFT indica que o cursor 333 se movi- mentou fora da janela de aplicação 312W (e/ou fora da área de trabalho remota 313). O mé- todo 400 inclui um ato de receber uma mensagem indicando que o cursor da janela da área de trabalho foi movimentado (ato 405). Por exemplo, o componente de cliente 316 pode re- ceber a mensagem MOUSE_HAS_LEFT pelo canal virtual 321 do componente de cliente 306.
O método 400 inclui um ato de determinar que o movimento do cursor da janela da área de trabalho está associado com uma operação de arrastar e soltar pendente (ato 406). Por exemplo, o componente de servidor 316 pode determinar que a movimentação do cur- sor fora dos limites da janela de aplicação 313 está associada com uma operação de arras- tar e soltar para o objeto 326. O componente de servidor 316 pode chamar uma API Modelo de Objeto Comum ("COM") para consultar se uma operação de arrastar e soltar efetiva está pendente ou se o mouse está sendo movimentado por outras razões.
Os atos 401, 402, 403, 404 e 405 podem ser incluídos como parte do ajuste de uma operação de arrastar e soltar, de um módulo remoto para um módulo local. Por exemplo, quando um usuário comprime um botão na janela de cliente, o mouse é capturado por uma janela de manipulador de entrada. Ainda que o mouse esteja sendo arrastado, o mouse po- de ser checado repetidamente, se ainda estiver rondando pela janela do manipulador de entrada. Se o mouse não estiver rondando a janela do manipulador de entrada, então um arrastar foi possivelmente iniciado de um módulo remoto para um módulo local. Após ter sido detectado que o mouse tinha deixado o módulo remoto, uma mensagem MOUSE_HAS_LEFT é enviada para o componente de servidor 316 pelo canal virtual.
Ao receber essa mensagem, o componente de servidor 316 faz a transição para tornar-se um alvo de soltar representante. Uma transição para o alvo de arrastar represen- tante pode ser feita por uso de pelo menos dois diferentes mecanismos. Um mecanismo inclui a maximização da janela de arrastar e soltar combinada por alfa, para encher toda a tela da sessão em estado real, e depois forçar a janela de arrastar e soltar combinada por alfa na parte de topo da ordem z. Outro mecanismo inclui chamar APIs OLE.
Após fazer a transição para um servidor alvo de arrastar representante, o compo- nente 316 pode agir como um alvo de arrastar representante na sessão remota. Por exem- plo, ao tornar-se um alvo de arrastar representante, um método DragEnter para o compo- nente de servidor 316 pode ser chamado. O método DragEnter faz com que o objeto 326 seja armazenado e uma mensagem START_DRAG_DROP seja enviada para o componente de cliente 306.
A mensagem START_DRAG_DROP pode ser processada por um manipulador de eventos no componente de cliente 306. O manipulador de eventos em um componente de cliente 306. O manipulador de eventos pode extrair os nomes de formatos e os efeitos de soltar habilitados. Em resposta, o componente de cliente 306 pode iniciar um evento DO_MODAL_LOOP, para informar um manipulador de eventos para o sistema computadori- zado 301 que um laço de arrastar e soltar local vai ser iniciado. Ao receber o evento DO_MODAL_LOOP, o manipulador de eventos constrói o objeto representante 328 e redire- ciona os eventos de notificação de arrastar e soltar para o componente de cliente 306. Des- se modo, faz-se com que o componente de cliente 306 faça uma transição para uma fonte de soltar representante.
O evento de notificação de arrastar e soltar pode ser redirecionado por desabilita- ção dos coletores de eventos em uma cadeia de arrastar e soltar e habilitação dos coletores de eventos criados especialmente para o componente de cliente 306. Antes que o Ioop mo- dal DoDragDrop seja iniciado, a cadeia de arrastar e soltar pode ser sinalizada para informar que o laço é próximo de começar. Em resposta, o comentário de cliente 306 pode enviar uma mensagem START_DRAG_DROP_RESPONSE para o componente de servidor 316. Na recepção da mensagem START_DRAG_DROP_RESPONSE, o componente de servidor 316 é liberado para arrastar e soltar mensagens, tais como, por exemplo, as mensagens DO_DRAG_DROP e STOP_DRAG_DROP1 para o componente de cliente 306.
No entanto, ainda que o mouse esteja sendo arrastado em torno da janela de apli- cação 302W, vários eventos de botões de mouse e teclado podem ser de interesse. Um QueryContinueDrag na aplicação 312 (a aplicação remota) pode ser usado para obter atua- lizações para essas informações. Para atualizar o componente de servidor 316 com o atual estado de entrada, um manipulador de entrada envia um botão de mouse adequado para cima ou para baixo e botão de teclado para cima ou para baixo. Um método GiveFeedback é chamado no componente de cliente 306, para atualizar o componente de servidor 316 com o efeito de soltar retornado pela aplicação 302, por alavancamento da mensagem UPDATE_DROP_EFFECT. No sistema computadorizado 311, o efeito de soltar é armaze- nado e posteriormente retornado em um método DragOver invocado pelo sistemas compu- tadorizados 316.
Com base no estado do mouse e do teclado no sistema computadorizado 301, a aplicação 312 pode decidir eventualmente para cancelar a operação de arrastar ou permitir ocorrência de um soltar. Desse modo, em algumas modalidades, uma operação de arrastar é cancelada (e, desse modo, não ocorre qualquer soltar). Se um cancelar ocorre, o compo- nente de servidor 316 (o alvo de soltar representante) é informado por um método DragLeave.
Em resposta a um cancelar, um componente de servidor 316 pode também enviar uma mensagem STOP_DRAG_DROP para o componente de cliente 306. Após uma men- sagem STOP_DRAG_DROP ter sido enviada, o objeto 326 pode ser liberado. Um manipu- lador de eventos para o componente de cliente 306 pode armazenar o resultado de cancelar indicado em uma mensagem STOP_DRAG_DROP. Desse modo, o QueryContinueDrag seguinte é chamado, retorna DRAGDROP_S_CANCEL, provocando que a operação de ar- rastar termine no sistema computadorizado 301.
Em outras modalidades, ocorre um soltar. Na medida em que um usuário movimen- ta um mouse em torno de uma janela de aplicação local 302W, o usuário pode liberar um botão de mouse. Quando o botão de mouse é liberado, o componente de cliente 306 indica a liberação para o componente de servidor 316 pelo canal virtual 321. Em resposta, o com- ponente de servidor 316 pode enviar uma mensagem DO_DRAG_DROP para o componen- te de cliente 306, para pedir a transferência do objeto 326 para a aplicação 302. O compo- nente de servidor 316 pode enviar uma indicação da mensagem DO_DRAG_DROP para a aplicação 302. O componente de cliente 306 pode enviar uma mensagem DO_DRAG_DROP_RESPONSE para o componente de servidor 316 pelo canal virtual 321.
O método 400 inclui um ato de enviar uma consulta para um objeto de arrastar e soltar (ato 407). Por exemplo, em resposta à indicação da mensagem DO_DRAG_DROP, a aplicação 302 pode consultar o objeto representante 328. O método 400 inclui um ato de receber uma consulta para um objeto de arrastar e soltar de uma aplicação local (ato 408). Por exemplo, o componente de cliente 306 pode receber uma consulta para o objeto 326 da aplicação 302.
O método 400 inclui um ato de enviar um pedido para o objeto de arrastar e soltar para o sistemas computadorizados (ato 409). Por exemplo, o componente de cliente 306 pode enviar uma mensagem FORMAT_DATA_REQUEST para o componente de servidor 316 pelo canal virtual 321. A mensagem FORMAT_DATA_REQUEST pede o objeto 326 para a aplicação 312. O método 400 inclui um ato de receber um pedido para um objeto de arrastar e soltar do componente de cliente (ato 410). Por exemplo, o componente de servi- dor 316 pode receber uma mensagem FORMAT_DATA_REQUEST do componente de cli- ente 306 pelo canal virtual 321.
O método 400 inclui um ato de encaminhar o pedido para o objeto de arrastar e sol- tar para a aplicação remota (ato 411). Por exemplo, o componente de servidor 316 pode encaminhar o pedido para o objeto 326 para a aplicação 312. O método 400 inclui um ato de receber um pedido para um objeto de arrastar e soltar (ato 412). Por exemplo, a aplicação 312 pode receber o pedido para o objeto 326 do componente de servidor 316.
O método 400 inclui um ato de enviar o objeto de arrastar e soltar (ato 413). Por exemplo, a aplicação 312 pode enviar o objeto 326 para o componente de servidor 316. O método 400 inclui um ato de receber o objeto de arrastar e soltar da aplicação remota (ato 414). Por exemplo, o componente de servidor 316 pode receber o objeto 326 da aplicação 312.
O método 400 inclui um ato de enviar o objeto de arrastar e soltar para o compo- nente de cliente (ato 415). Por exemplo, o componente de servidor 316 pode enviar uma mensagem FORMAT_DATA_RESPONSE, incluindo dados do objeto 326, para o compo- nente de cliente 306 pelo canal virtual 321. O método 400 inclui um ato de receber o objeto de arrastar e soltar do componente de servidor (ato 416). Por exemplo, o componente de cliente 306 pode receber a mensagem FORMAT_DATA_RESPONSE, incluindo dados do objeto 326, do componente de servidor 306 pelo canal virtual 321.
O método 400 inclui um ato de encaminhar o objeto de arrastar e soltar para a apli- cação local (ato 417). Por exemplo, o componente de cliente 306 pode encaminhar dados do objeto 326 para a aplicação 312. O método 400 inclui um ato de receber o objeto de ar- rastar e soltar (ato 418). Por exemplo, a aplicação 302 pode receber dados do objeto 306 do componente de cliente 306. Conseqüentemente, dependendo do efeito de soltar seleciona- do, os dados do objeto 326 são movimentados, copiados, ligados, hiperligados ou tomam um atalho da aplicação 312 para a aplicação 302.
O componente de cliente 306 (a fonte de soltar representante) e o componente de servidor 316 (o alvo de soltar representante) podem ser configurados em vários diferentes modos, para facilitar a implementação do método 400.
Por exemplo, o componente de cliente 306 (a fonte de arrastar representante) pode ser configurado para criar um objeto de dados representante, anunciando os nomes de for- matos corretos, retransmitem o efeito de soltar atual para o componente de servidor 316, indicam um cancelar ou soltar, quando instruídos pelo componente de servidor 316, e atuali- zam o estado das teclas do mouse e o estado das teclas do teclado dentro da janela de a- plicação 312W. Um método de arrastar QueryContinue pode ser usado para receber um vetor de estado das teclas contendo os estados das teclas do teclado e os estados dos bo- tões do mouse. Os estados das teclas do teclado e dos botões do mouse podem ser envia- dos para o componente de servidor 316 pelo canal virtual 321.
O componente de servidor 316 (o alvo de soltar representante) pode ser configura- do para indicar quando o Ioop modal de arrastar e soltar vai ser iniciado, enviar a lista de formatos que a aplicação 312 pode proporcionar, retornar o último efeito de arrastar recebi- do do componente de servidor 306 para a aplicação 312, atualizar o componente de cliente 306 relativo ao estado de uma operação de arrastar e soltar pendente, e armazenar um ob- jeto ponteiro 326, se ocorrer um arrastar.
O objeto de dados representante 328 pode ser criado quando uma mensagem START_DRAG_DROP é recebida. 0 objeto de dados representante 328 reproduz essenci- almente o objeto 326 por retorno dos mesmos formatos anunciados pelo objeto 326. Quan- do dados são pedidos do objeto de dados representante 328, ele envia uma mensagem FORMAT_DATA_REQUEST para o sistema computadorizado 311. O componente de servi- dor 316 pode então recuperar os dados do objeto 326 e envia os dados de volta em uma mensagem FORMAT_DATA_RESPONSE.
Conseqüentemente, as modalidades da presente invenção podem facilitar o arras- tar e soltar de objetos de um módulo remoto para um módulo local.
A presente invenção pode ser representada em outras formas específicas, sem que se afaste do seu espírito ou de suas características essenciais. As modalidades descritas vão ser consideradas em todos os aspectos apenas como ilustrativas e não restritivas. O âmbito da invenção é, portanto, indicado pelas reivindicações em anexo em vez de pela descrição precedente. Todas as variações que se encaixam no significado e na faixa de e- quivalência das reivindicações vão ser abrangidas dentro do âmbito delas.

Claims (20)

1. Método para usar arrastar e soltar para transferir um objeto da aplicação local (102) para um módulo remoto no sistema computadorizado de servidor (111), em um siste- ma computadorizado (101), o sistema computadorizado incluindo uma aplicação local (102) sendo executada no sistema computadorizado (101) e em um componente de cliente (106), o componente de cliente (106) participando em uma sessão de servidor de terminal (131) com um componente de servidor (116) em um sistema computadorizado de servidor (111), o método CARACTERIZADO pelo fato de que compreende: um ato do componente de cliente (106) detectando que um cursor da janela da área de-trabalho (133) foi movimentado de fora para dentro dos limites de uma janela de aplica- çãõ (112W) para uma aplicação remota (112); um ato do componente de cliente (106) recebendo uma notificação de arrastar, in- dicando uma operação de arrastar e soltar pendente, a notificação de arrastar indicando que um objeto de arrastar e soltar (126) vai ser transferido para a aplicação remota (112); um ato de componente de cliente (106) enviando um pedido para transferir o objeto de arrastar e soltar (126), juntamente com uma localização de coordenadas do cursor da janela da área de trabalho (133) para o sistema computadorizado de servidor (111), pela sessão de servidor de terminal (131), em resposta ao recebimento da notificação de soltar; um ato do componente de cliente (106) recebendo um pedido para o objeto de ar- rastar e soltar do sistema computadorizado de servidor (111) pela sessão de servidor de terminal (131); o componente de cliente (106) agindo como um alvo de soltar representante em nome da aplicação remota (112), em resposta ao recebimento para o objeto de arrastar e soltar (126), incluindo: um ato de encaminhar o pedido para o objeto de arrastar e soltar (126) para a apli- cação local (102); e um ato de receber o objeto de arrastar e soltar (126) da aplicação local (102), envi- ado em resposta ao pedido para o objeto de arrastar e soltar (126); e um ato do componente de cliente (106) enviando o objeto de arrastar e soltar (126) para o sistema computadorizado de servidor (111) pela sessão de servidor de terminal (131), para distribuição pela aplicação remota (112).
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende ainda: um ato de configurar o componente de cliente como um alvo de soltar representan- te, de modo que o componente de cliente possa receber os objetos de arrastar e soltar da aplicação local.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende ainda: um ato de receber uma entrada de usuário selecionando um objeto de arrastar e soltar de dentro de uma janela de aplicação local, a janela de aplicação local representando uma interface de usuário para a aplicação local; e um ato de modificar um cursor da janela da área de trabalho para representar visu- almente esse objeto de arrastar e soltar que foi selecionado.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o ato de detectar se esse cursor da janela da área de trabalho foi movimentado de fora para dentro dos limites de uma janela de aplicação, para uma aplicação remota, compreende um ato de detectar que o cursor da janela da área de trabalho se movimentou de dentro dos limites de uma janela de aplicação local para dentro dos limites da janela de aplicação para a aplicação remota.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o ato do componente de cliente recebendo uma notificação de arrastar, indicando uma opera- ção de arrastar e soltar pendente, compreende um ato de detectar uma variação no estado dos botões em um dispositivo de entrada.
6. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o ato do componente de cliente enviando um pedido para transferir o objeto de arrastar e sol- tar, juntamente com uma localização de coordenadas do cursor da janela da área de traba- lho, para o sistema computadorizado de servidor pela sessão de servidor de terminal, com- preende um ato de enviar uma mensagem por um canal virtual da sessão de servidor de terminal.
7. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o ato do componente de cliente enviando um pedido para transferir o objeto de arrastar e sol- tar, juntamente com uma localização de coordenadas do cursor da janela da área de traba- lho, para o sistema computadorizado de servidor, pela sessão de servidor de terminal, com- preende um ato de enviar uma mensagem por uma sessão de Protocolo de Área de Traba- lho Remota.
8. Método para usar arrastar e soltar para transferir um objeto para uma da uma ou mais aplicações remotas (112) de um módulo no sistema computadorizado de cliente (101), em um sistema computadorizado (111), o sistema computadorizado (111) incluindo uma ou mais aplicações remotas (112), sendo executadas no sistema computadorizado (111), e um componente de servidor (116), o componente de servidor (116) participando em uma sessão de servidor de terminal (131) com um componente de cliente (106) em um sistema compu- tadorizado de cliente (101), a uma ou mais aplicações remotas (112) sendo executadas no sistema computadorizado (111), configurado para ser acessado remotamente pela sessão de servidor de terminal (131) pelo sistema computadorizado de cliente (101), o método CARACTERIZADO pelo fato de que compreende: um ato do componente de servidor (116) recebendo um pedido para transferir um objeto de arrastar e soltar (126) para o sistema computadorizado (111) e uma localização de coordenadas indicando o local do cursor da janela da área de trabalho (133) no sistema computadorizado de cliente (110), o pedido e a localização de coordenadas enviados pela sessão de servidor de terminal (131); um ato do componente de servidor (116) encaminhando uma notificação de transfe- rência de objeto de arrastar e soltar a uma aplicação remota, correspondente à localização das coordenadas; o componente de servidor (116) agindo como uma fonte de soltar representante, em nome de uma aplicação (102) no sistema computadorizado de cliente (101), em resposta ao recebimento do pedido para transferir um objeto de arrastar e soltar (126), incluindo um ato do componente de servidor (116) recebendo um pedido para o objeto de arrastar e soltar (126) da aplicação remota (112); um ato do componente de servidor (116) encaminhando o pedido para o objeto de arrastar e soltar (126) para o componente de cliente (106) pela sessão de servidor de termi- nal (131); um ato do componente de servidor (116) recebendo o objeto de arrastar e soltar (126) do componente de cliente (106) pela sessão de servidor de terminal (131); e o componente de servidor (116) agindo como uma fonte de soltar representante, em nome da aplicação (102) no sistema computadorizado de cliente (101), em resposta ao recebimento do objeto de arrastar e soltar (126), incluindo um ato do componente de servi- dor (116) enviando o objeto de arrastar e soltar (126) à aplicação remota (112).
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que o ato do componente de servidor, recebendo um pedido para transferir um objeto de arrastar e soltar para o sistema computadorizado e uma localização de coordenadas indicando a loca- lização do cursor da janela da área de trabalho, no sistema computadorizado de cliente, compreende um ato de receber uma mensagem por um canal virtual da sessão de servidor de terminal.
10. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que compreende ainda: um ato de criar um objeto representante para reproduzir os formatos anunciados pelo objeto de arrastar e soltar.
11. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que compreende ainda: um ato de configurar o componente de servidor como uma fonte de soltar represen- tante, de modo que o componente de servidor possa proporcionar objetos de arrastar e sol- tar para a aplicação remota.
12. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que compreende ainda: um ato do componente de servidor iniciando um Ioop modal de arrastar e soltar.
13. Método para usar arrastar e soltar para transferir um objeto de um módulo re- moto, no sistema computadorizado de servidor, para a aplicação local (302), em um sistema computadorizado (301), o sistema computadorizado (301) incluindo uma aplicação local (302) sendo executada no sistema computadorizado (301) e um componente de cliente (306), o componente de cliente (306) participando em uma sessão de servidor de terminal (331) com um componente de servidor (316) em um sistema computadorizado de servidor (311), o método CARACTERIZADO pelo fato de que compreende: um ato do componente de cliente (306) detectando que um cursor da janela da área de trabalho (333) foi movimentado, de dentro para fora dos limites de uma janela de aplica- ção (312W), para uma aplicação remota (312); um ato do componente de cliente (306) enviando uma mensagem para o compo- nente de servidor (316) pela sessão de servidor de terminal (331), a mensagem indicando ao componente de servidor (316) que o cursor da janela da área de trabalho (333) foi movi- mentado, de dentro para fora dos limites da janela de aplicação (312W), para a aplicação remota (312); o componente de cliente (306) agindo como uma fonte de soltar representante, em nome da aplicação remota (312), em resposta ao recebimento do pedido para o objeto de arrastar e soltar (326), incluindo um ato do componente de cliente (306) recebendo uma consultar para o objeto de arrastar e soltar da aplicação local (302), a consulta indicativa de uma notificação de soltar na aplicação local (302), representando que o objeto de arrastar e soltar (326) vai ser transferido para a aplicação local (302); um ato do componente de cliente (302) enviando um pedido para o objeto de arras- tar e soltar (326) para o componente de servidor (316), o pedido enviado pela sessão de servidor de terminal (331) em resposta à consulta, o pedido indicando ao componente de servidor (316) que a aplicação local (302) está pedindo o objeto de arrastar e soltar (326); um ato do componente de cliente (306) recebendo o objeto de arrastar e soltar (326) do sistema computadorizado de servidor (311) pela conexão de servidor de terminal (311); e o componente de cliente (306) agindo como uma fonte de soltar representante, em nome da aplicação remota (312), em resposta ao recebimento do objeto de arrastar e soltar (326), incluindo um ato do componente de cliente (306) enviando o objeto de arrastar e sol- tar (326) para a aplicação local (302).
14. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o ato do componente detectando que um cursor da janela da área de trabalho foi movimen- tado, de dentro para fora dos limites de uma janela de aplicação, para uma aplicação remota compreende um ato de detectar que a janela do cursor da área de trabalho foi movimentada da aplicação de uma aplicação remota para uma janela de aplicação local da aplicação local.
15. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que compreende ainda: um ato de criar um objeto representante para reproduzir os formatos anunciados pelo objeto de arrastar e soltar.
16. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que compreende ainda: um ato de configurar o componente de cliente como uma fonte de soltar represen- tante, de modo que o componente de cliente possa proporcionar objetos de arrastar e soltar para o componente de cliente.
17. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que compreende ainda: um ato de receber entrada de usuário selecionando um objeto de arrastar e soltar de dentro de uma janela de área de trabalho para uma aplicação remota, a janela de aplica- ção representando uma interface de usuário para a aplicação remota; e um ato de modificar um cursor da janela da área de trabalho para representar visu- almente que um objeto de arrastar e soltar foi selecionado.
18. Método para usar arrastar e soltar para transferir um objeto de uma aplicação remota (312) para um módulo no sistema computadorizado de cliente (301), em um sistema computadorizado (311), o sistema computadorizado (311) incluindo uma ou mais aplicações remotas (312) sendo executadas no sistema computadorizado (311) e um componente de servidor (316), o componente de servidor (316) participando em uma sessão de servidor de terminal (331) com um componente de cliente (306) em um sistema computadorizado de cliente (301), que uma ou mais aplicações remotas (312) sendo executadas no sistema computadorizado (311), configurada para serem acessadas remotamente pela sessão de servidor de terminal (331) pelo sistema computadorizado de cliente (301), o método CARACTERIZADO pelo fato de que compreende: um ato do componente de servidor (316) recebendo uma mensagem do componen- te de cliente (306) pela sessão de servidor de terminal (331), a mensagem indicando ao componente de servidor (316) que um cursor da janela da área de trabalho (333) foi movi- mentado de dentro para fora dos limites de uma janela de aplicação (312W), correspondente a uma aplicação remota (312) no sistema computadorizado de cliente (311); um ato do componente de servidor (316) determinando que o movimento do cursor da janela da área de trabalho (333) é associado com uma operação de arrastar e soltar pen- dente; um ato do componente de servidor (316) recebendo um pedido para um objeto de arrastar e soltar (326) do componente de cliente (306), o pedido enviado pela sessão de servidor de terminal (331), em resposta a uma consulta para o objeto de arrastar e soltar (326) de uma aplicação (302) no sistema computadorizado de cliente (301), o pedido indi- cando ao componente de servidor (316) que a aplicação (302) no componente de servidor (306) está pedindo o objeto de arrastar e soltar (326) da aplicação remota (312); o componente de servidor (316) agindo como um alvo de soltar representante, em nome da aplicação (316) no sistema computadorizado de cliente (311), em resposta ao re- cebimento do pedido para o objeto de arrastar e soltar (326), incluindo: um ato de encaminhar o pedido para o objeto de arrastar e soltar (326) para a apli- cação remota (312); e um ato de receber o objeto de arrastar e soltar (126) da aplicação remota (312), en- viado em resposta ao pedido para o objeto de arrastar e soltar (326); e um ato do componente de servidor (316) enviando o objeto de arrastar e soltar (326) para o sistema computadorizado de cliente (310) pela sessão de servidor de terminal (331), para distribuição para a aplicação (302) no sistema computadorizado de cliente (301).
19. Método, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que compreende ainda: um ato de configurar o componente de servidor como um alvo de soltar represen- tante, de modo que o componente de servidor possa receber os objetos de arrastar e soltar da aplicação remota.
20. Método, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que o ato do componente de servidor enviando o objeto de arrastar e soltar para o sistema com- putadorizado de cliente, pela sessão de servidor de terminal, compreende um ato do com- ponente de servidor enviar o objeto de arrastar e soltar por um canal virtual de uma sessão de protocolo de área de trabalho remota.
BRPI0712350-7A 2006-06-09 2007-02-13 arrastar e soltar objetos entre módulos locais e remotos BRPI0712350A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/423400 2006-06-09
US11/423,400 US7533349B2 (en) 2006-06-09 2006-06-09 Dragging and dropping objects between local and remote modules
PCT/US2007/003702 WO2007142708A1 (en) 2006-06-09 2007-02-13 Dragging and dropping objects between local and remote modules

Publications (1)

Publication Number Publication Date
BRPI0712350A2 true BRPI0712350A2 (pt) 2012-05-29

Family

ID=38801780

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0712350-7A BRPI0712350A2 (pt) 2006-06-09 2007-02-13 arrastar e soltar objetos entre módulos locais e remotos

Country Status (12)

Country Link
US (2) US7533349B2 (pt)
EP (1) EP2033107B1 (pt)
JP (1) JP4482615B2 (pt)
KR (1) KR20090027624A (pt)
CN (1) CN101467139B (pt)
AU (1) AU2007257440A1 (pt)
BR (1) BRPI0712350A2 (pt)
CA (1) CA2654040A1 (pt)
MX (1) MX2008015484A (pt)
RU (1) RU2430405C2 (pt)
TW (1) TW200807948A (pt)
WO (1) WO2007142708A1 (pt)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405459B2 (en) 2011-08-24 2016-08-02 Z124 Unified desktop laptop dock software operation
US20130080143A1 (en) * 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop docking behavior with device as master
US9715252B2 (en) 2011-08-24 2017-07-25 Z124 Unified desktop docking behavior for window stickiness
US9268518B2 (en) 2011-09-27 2016-02-23 Z124 Unified desktop docking rules
PL1844390T3 (pl) * 2005-01-31 2012-12-31 Cortado Ag Sposób i układ do drukowania za pośrednictwem serwera aplikacji oraz odpowiedni program komputerowy i odpowiedni czytelny dla komputera nośnik danych
US7533349B2 (en) * 2006-06-09 2009-05-12 Microsoft Corporation Dragging and dropping objects between local and remote modules
US10503342B2 (en) 2006-08-04 2019-12-10 Apple Inc. User interface spaces
US20080215998A1 (en) * 2006-12-07 2008-09-04 Moore Dennis B Widget launcher and briefcase
US8117555B2 (en) * 2006-12-07 2012-02-14 Sap Ag Cooperating widgets
US8612547B1 (en) 2006-12-29 2013-12-17 Google Inc. Container interrupt services
US7895296B1 (en) 2006-12-29 2011-02-22 Google, Inc. Local storage for web based native applications
US8539073B1 (en) 2006-12-29 2013-09-17 Google Inc. Startup of container applications
US9391826B1 (en) 2006-12-29 2016-07-12 Google Inc. Collaborative web based applications
US8248636B1 (en) 2006-12-29 2012-08-21 Google Inc. WYSIWYG printing for web based applications
US8335817B1 (en) * 2006-12-29 2012-12-18 Google Inc. Message passing within a web based application framework
US9384346B1 (en) 2006-12-29 2016-07-05 Google Inc. Local service access within a web based application framework
US20090094561A1 (en) * 2007-10-05 2009-04-09 International Business Machines Corporation Displaying Personalized Documents To Users Of A Surface Computer
US9134904B2 (en) * 2007-10-06 2015-09-15 International Business Machines Corporation Displaying documents to a plurality of users of a surface computer
US8139036B2 (en) * 2007-10-07 2012-03-20 International Business Machines Corporation Non-intrusive capture and display of objects based on contact locality
US20090091539A1 (en) * 2007-10-08 2009-04-09 International Business Machines Corporation Sending A Document For Display To A User Of A Surface Computer
US8024185B2 (en) 2007-10-10 2011-09-20 International Business Machines Corporation Vocal command directives to compose dynamic display text
US9619304B2 (en) * 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8370519B2 (en) * 2008-02-12 2013-02-05 Microsoft Corporation Copying data onto an expandable memory in a wireless device using a desktop interface
US20090237363A1 (en) * 2008-03-20 2009-09-24 Microsoft Corporation Plural temporally overlapping drag and drop operations
US20140040862A1 (en) * 2008-04-03 2014-02-06 Adobe Systems Incorporated Copying Reusable Components from a Remote Source
US20090300131A1 (en) * 2008-05-27 2009-12-03 Supportspace Ltd. Simultaneous remote and local control of computer desktop
EP2131271A1 (en) * 2008-06-04 2009-12-09 NEC Corporation Method for enabling a mobile user equipment to drag and drop data objects between distributed applications
US11258652B2 (en) 2008-06-08 2022-02-22 Apple Inc. System and method for placeshifting media playback
US9626363B2 (en) * 2008-06-08 2017-04-18 Apple Inc. System and method for placeshifting media playback
US8516125B2 (en) * 2008-06-08 2013-08-20 Apple Inc. System and method for simplified data transfer
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
EP2184679A1 (en) * 2008-10-30 2010-05-12 Alcatel Lucent Method for operating an ending web-widget with data retrieved from a starting web-widget
TW201020901A (en) * 2008-11-20 2010-06-01 Ibm Visual feedback for drag-and-drop operation with gravitational force model
KR20100081577A (ko) * 2009-01-06 2010-07-15 삼성전자주식회사 휴대단말에서 오브젝트의 내비게이션 방법 및 장치
US8650634B2 (en) 2009-01-14 2014-02-11 International Business Machines Corporation Enabling access to a subset of data
US8169904B1 (en) * 2009-02-26 2012-05-01 Sprint Communications Company L.P. Feedback for downlink sensitivity
US8621387B2 (en) * 2009-06-08 2013-12-31 Apple Inc. User interface for multiple display regions
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US8239781B2 (en) * 2009-06-30 2012-08-07 Sap Ag Drag and drop of an application component to desktop
US9277021B2 (en) 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
JP5433375B2 (ja) * 2009-10-23 2014-03-05 楽天株式会社 端末装置、機能実行方法、機能実行プログラム及び情報処理システム
US20110119609A1 (en) * 2009-11-16 2011-05-19 Apple Inc. Docking User Interface Elements
US8441702B2 (en) 2009-11-24 2013-05-14 International Business Machines Corporation Scanning and capturing digital images using residue detection
US8610924B2 (en) 2009-11-24 2013-12-17 International Business Machines Corporation Scanning and capturing digital images using layer detection
KR20110064674A (ko) 2009-12-08 2011-06-15 삼성전자주식회사 동적 로컬 기능 결합 장치 및 방법
CN102754057A (zh) * 2009-12-23 2012-10-24 诺基亚公司 用于显示器设备的方法和装置
US9009219B2 (en) * 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US8555187B2 (en) * 2010-02-16 2013-10-08 Google Inc. Server-based data sharing in computer applications using a clipboard
CN102262528B (zh) * 2010-05-26 2016-06-22 腾讯科技(深圳)有限公司 即时通讯客户端及其内嵌网页页面实现拖拽的方法
US8335991B2 (en) * 2010-06-11 2012-12-18 Microsoft Corporation Secure application interoperation via user interface gestures
US20120030664A1 (en) * 2010-07-30 2012-02-02 Sap Ag Processing of software objects moved into a dropzone region of an application
US8527891B2 (en) 2010-08-13 2013-09-03 International Business Machines Corporation Enabling user interactions between user interface components
US20120131483A1 (en) * 2010-11-22 2012-05-24 International Business Machines Corporation Drag-and-drop actions for web applications using an overlay and a set of placeholder elements
CN102566983B (zh) * 2010-12-07 2016-04-20 腾讯科技(深圳)有限公司 基于Windows系统的对象拖拽实现方法及其系统
US9811528B2 (en) 2010-12-09 2017-11-07 Yosef Benraz Systems and methods for providing continuing access to a remote computer program
TW201227489A (en) * 2010-12-31 2012-07-01 Hon Hai Prec Ind Co Ltd System and method for processing image
WO2012102416A1 (en) * 2011-01-24 2012-08-02 Lg Electronics Inc. Data sharing between smart devices
US9367224B2 (en) * 2011-04-29 2016-06-14 Avaya Inc. Method and apparatus for allowing drag-and-drop operations across the shared borders of adjacent touch screen-equipped devices
WO2012160561A1 (en) * 2011-05-23 2012-11-29 Tako Technology Ltd. Computerized system and method for remote accessto a computer program
US8489680B1 (en) 2011-08-18 2013-07-16 Google Inc. Transmission of input values using an unreliable communication link
US8842057B2 (en) 2011-09-27 2014-09-23 Z124 Detail on triggers: transitional states
EP2581824A1 (en) * 2011-10-13 2013-04-17 Gface GmbH Smart drag and drop
KR101943987B1 (ko) * 2011-12-06 2019-04-17 삼성전자주식회사 디바이스 간의 페이지 공유 시스템 및 방법
US9164544B2 (en) 2011-12-09 2015-10-20 Z124 Unified desktop: laptop dock, hardware configuration
CN103186430A (zh) * 2011-12-30 2013-07-03 联想(北京)有限公司 文件操作装置及方法,和对应的数字处理设备和数字处理系统
CN103186421A (zh) * 2011-12-31 2013-07-03 联想(北京)有限公司 一种在混合系统远程桌面实现数据交互的方法和装置
JPWO2013175770A1 (ja) * 2012-05-25 2016-01-12 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 情報処理装置、情報処理方法、および情報処理プログラム
US8970492B2 (en) 2012-06-08 2015-03-03 Microsoft Technology Licensing, Llc Remote session control using multi-touch inputs
US8943582B1 (en) * 2012-07-18 2015-01-27 Amazon Technologies, Inc. Transferring information among devices using cameras
US20140047368A1 (en) * 2012-08-13 2014-02-13 Magnet Systems Inc. Application development tool
KR102017631B1 (ko) * 2012-09-03 2019-09-03 삼성전자주식회사 데이터 통신을 위한 단말 장치 및 방법
CN104571782A (zh) * 2013-10-18 2015-04-29 腾讯科技(深圳)有限公司 远程控制方法、系统、操控终端及被控终端
CN103955328B (zh) * 2014-04-29 2017-01-18 广东威创视讯科技股份有限公司 操作端查阅拼接墙中显示内容的方法和系统
US10664488B2 (en) 2014-09-25 2020-05-26 Oracle International Corporation Semantic searches in a business intelligence system
US10417247B2 (en) 2014-09-25 2019-09-17 Oracle International Corporation Techniques for semantic searching
US10516980B2 (en) 2015-10-24 2019-12-24 Oracle International Corporation Automatic redisplay of a user interface including a visualization
US10082941B2 (en) * 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US10545717B2 (en) 2015-10-08 2020-01-28 Pcms Holdings, Inc. Methods and systems of automatic calibration for dynamic display configurations
US10088981B2 (en) * 2015-12-29 2018-10-02 Sap Se User engagement application across user interface applications
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
US10860200B2 (en) * 2017-05-16 2020-12-08 Apple Inc. Drag and drop for touchscreen devices
US10956237B2 (en) * 2017-06-02 2021-03-23 Oracle International Corporation Inter-application sharing of business intelligence data
US11614857B2 (en) 2017-06-02 2023-03-28 Oracle International Corporation Importing, interpreting, and presenting data
US10917587B2 (en) 2017-06-02 2021-02-09 Oracle International Corporation Importing and presenting data
JP6961402B2 (ja) 2017-06-22 2021-11-05 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
US11301124B2 (en) * 2017-08-18 2022-04-12 Microsoft Technology Licensing, Llc User interface modification using preview panel
US11237699B2 (en) 2017-08-18 2022-02-01 Microsoft Technology Licensing, Llc Proximal menu generation
US10783012B2 (en) 2018-04-20 2020-09-22 CopyBucket, Inc. Systems and methods for efficient inter-device data exchange
US11741673B2 (en) 2018-11-30 2023-08-29 Interdigital Madison Patent Holdings, Sas Method for mirroring 3D objects to light field displays
US20200192539A1 (en) * 2018-12-13 2020-06-18 Vmware, Inc. System and method for operating system event redirection
CN109782976B (zh) * 2019-01-15 2020-12-22 Oppo广东移动通信有限公司 文件处理方法、装置、终端及存储介质
CN114089900A (zh) * 2020-07-29 2022-02-25 华为技术有限公司 一种跨设备的对象拖拽方法及设备
CN111752722A (zh) * 2020-05-28 2020-10-09 西安万像电子科技有限公司 数据传输方法及设备
TWI761056B (zh) * 2021-02-01 2022-04-11 宏正自動科技股份有限公司 資料傳送方法與資料傳送裝置
US11402964B1 (en) * 2021-02-08 2022-08-02 Facebook Technologies, Llc Integrating artificial reality and other computing devices
CN114138145B (zh) * 2021-11-30 2024-05-28 武汉噢易云计算股份有限公司 应用虚拟化的文件拖拽方法、装置、设备及可读存储介质
CN114928524B (zh) * 2022-05-20 2024-03-26 浪潮思科网络科技有限公司 一种web端与交换机的交互方法、设备及介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272715A (ja) * 1995-03-31 1996-10-18 Canon Inc 情報転送方法および掲示板装置
US5767851A (en) * 1996-01-29 1998-06-16 Sun Microsystems, Inc. Method and apparatus for emulating an environment's drag and drop functionality in a host environment
US6138150A (en) * 1997-09-03 2000-10-24 International Business Machines Corporation Method for remotely controlling computer resources via the internet with a web browser
US6687745B1 (en) 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
TW559699B (en) * 2000-01-12 2003-11-01 Sony Corp Image display device and method
US6941382B1 (en) * 2000-02-07 2005-09-06 Raja Tuli Portable high speed internet or desktop device
US7546602B2 (en) * 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
JP2003091489A (ja) * 2001-09-14 2003-03-28 Sony Corp ネットワーク情報処理システム及び情報処理方法
US20030093466A1 (en) * 2001-11-15 2003-05-15 Jarman James D. Drag and drop technology for remote control tool
US7650575B2 (en) 2003-03-27 2010-01-19 Microsoft Corporation Rich drag drop user interface
US20050091359A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Systems and methods for projecting content from computing devices
US7721254B2 (en) * 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
KR100611255B1 (ko) * 2004-10-15 2006-08-10 한국과학기술연구원 작업 공간을 공유하는 원격 회의 방법
JP4738805B2 (ja) * 2004-12-16 2011-08-03 株式会社リコー 画面共有システム、画面共有方法、画面共有プログラム
US8769127B2 (en) * 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
US7533349B2 (en) * 2006-06-09 2009-05-12 Microsoft Corporation Dragging and dropping objects between local and remote modules

Also Published As

Publication number Publication date
MX2008015484A (es) 2009-03-06
CA2654040A1 (en) 2007-12-13
US7533349B2 (en) 2009-05-12
US7802195B2 (en) 2010-09-21
US20070288599A1 (en) 2007-12-13
EP2033107A1 (en) 2009-03-11
JP2009540428A (ja) 2009-11-19
EP2033107A4 (en) 2017-03-29
CN101467139A (zh) 2009-06-24
EP2033107B1 (en) 2019-08-07
AU2007257440A1 (en) 2007-12-13
TW200807948A (en) 2008-02-01
RU2430405C2 (ru) 2011-09-27
KR20090027624A (ko) 2009-03-17
WO2007142708A1 (en) 2007-12-13
US20090210811A1 (en) 2009-08-20
RU2008148326A (ru) 2010-06-20
JP4482615B2 (ja) 2010-06-16
CN101467139B (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
BRPI0712350A2 (pt) arrastar e soltar objetos entre módulos locais e remotos
US9921892B2 (en) Techniques to modify a document using a latent transfer surface
AU2013293535B2 (en) Providing access to a remote application via a web client
US8370370B2 (en) Bridging real-world web applications and 3D virtual worlds
US8838808B2 (en) Asynchronous communication in web applications
US6356933B2 (en) Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US7783985B2 (en) Systems and methods for transferring data between computing devices
US6795089B2 (en) Dynamic, live surface and model elements for visualization and modeling
CN110769048B (zh) 本地与远程虚拟桌面的无缝衔接方法及系统
US8788627B2 (en) Interactive web application framework
KR20160141736A (ko) 데이터 뷰 노출 메커니즘
US8370862B1 (en) Communicating between software environments
JP2010182074A (ja) ファイル共有システム、ファイル共有方法及びそのプログラム
CN105389096A (zh) 基于浏览器的数据交互方法及装置
US20090199215A1 (en) Framework for computing device with auxiliary display
WO1994023362A1 (en) Behavior objects

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 8A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2308 DE 31/03/2015.