Перетаскивание объектов между локальными и удаленными модулями



Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
Перетаскивание объектов между локальными и удаленными модулями
G06F3/048 - Вводные устройства для передачи данных, подлежащих преобразованию в форму, пригодную для обработки в вычислительной машине; выводные устройства для передачи данных из устройств обработки в устройства вывода, например интерфейсы (пишущие машинки B41J; преобразование физических переменных величин F15B 5/00,G01; получение изображений G06T 1/00,G06T 9/00; кодирование, декодирование или преобразование кодов вообще H03M; передача цифровой информации H04L)

Владельцы патента RU 2430405:

МАЙКРОСОФТ КОРПОРЕЙШН (US)

Изобретение относится к вычислительной технике. Технический результат заключается в возможности использования устройств ввода совместно с визуальными признаками, чтобы непосредственно передавать объекты между локальными и удаленными прикладными программами. Способ использования перетаскивания и отпускания для переноса объекта из локальной прикладной программы в удаленный модуль в серверной компьютерной системе. Компоненты терминального сервера эмулируют функциональность участников операции перетаскивания для обеспечения выполнения перетаскивания объектов между локальными и удаленными модулями и наоборот. Компоненты терминального сервера взаимодействуют локально для взаимодействия с модулями, принимающими участие в операции перетаскивания. Компоненты терминального сервера также отправляют сообщения через сеанс терминального сервера для передачи соответствующей информации о перетаскивании соответствующим компонентам терминального сервера на другом конце сеанса терминального сервера. 4 н. и 18 з.п. ф-лы, 10 ил.

 

УРОВЕНЬ ТЕХНИКИ

Компьютерные системы и относящиеся к ним технологии затрагивают многие аспекты общества. Действительно, возможность компьютерных систем обрабатывать информацию преобразовала образ нашей жизни и работы. Компьютерные системы теперь обычно выполняют различные задачи (например, обработку текста, составление расписаний и управление базами данных), которые до появления компьютерных систем выполнялись вручную. Как правило, для выполнения этих различных задач компьютерная система включает в себя множество соответствующих прикладных программ. Например, для выполнения обработки текста компьютерная система может включать в себя прикладную программу обработки текста, для манипуляции с электронными таблицами компьютерная система может включать в себя прикладную программу электронных таблиц и т.д.

В автономной вычислительной среде часто бывает полезно иметь возможность перемещать объекты между прикладными программами, которые выполняют разные задачи в компьютерной системе. Например, может быть полезно переместить часть текста, сформированного в прикладной программе обработки текста, в программу презентации в качестве текста описания для изображения или рисунка. Чтобы обеспечить возможность перемещения объектов между прикладными программами, некоторые компьютерные системы включают в себя часть памяти (например, буфер обмена), которая может взаимодействовать общим способом с прикладными программами в компьютерной системе. Таким образом, одна прикладная программа может взаимодействовать с частью памяти для сохранения объекта, и затем другая прикладная программа может взаимодействовать с частью памяти для извлечения объекта. Таким образом, прикладные программы (даже те, которые не могут совместимым образом совершать обмен объектами непосредственно) могут совершать обмен объектами через часть памяти.

Многие автономные вычислительные среды также включают в себя более удобную возможность использования устройств ввода совместно с визуальными признаками, чтобы непосредственно передавать объекты между совместимыми прикладными программами. Одним общим механизмом для прямой передачи между прикладными программами является "перетаскивание и отпускание (drag and drop)". Чтобы обеспечить выполнение перетаскивания, пользователь идентифицирует объект в одной прикладной программе (например, часть текста, изображение или ячейку электронной таблицы). Например, пользователь может выделить часть текста с помощью мыши. Визуальный признак, например, фоновая подсветка, может использоваться для указания пользователю, что текст выбран.

Пользователь манипулирует устройством ввода, чтобы выбрать идентифицированный объект. Например, пользователь манипулирует мышью, чтобы поместить курсор над идентифицированным текстом, и затем может нажать левую кнопку мыши. Затем пользователь дополнительно манипулирует устройством ввода, чтобы переместить объект в другую прикладную программу. Например, удерживая нажатой левую кнопку мыши, пользователь может манипулировать мышью, чтобы поместить (перетащить) курсор над другой прикладной программой. Находясь над другой прикладной программой, пользователь может отпустить левую кнопку мыши. Действие отпускания кнопки мыши заставляет объект быть переданным (или "отпущенным") в другую прикладную программу.

В других средах компьютерные системы соединяются друг с другом и с другими электронными устройствами, чтобы сформировать как проводные, так и беспроводные компьютерные сети, по которым компьютерные системы и другие электронные устройства могут передавать электронные данные. В результате многие задачи, выполняемые в компьютерной системе (например, голосовая связь, доступ к электронной почте, управление бытовой электроникой, просмотр веб-страниц и печать документов), включают в себя взаимодействие (например, обмен электронными сообщениями) между несколькими компьютерными системами и/или другими электронными устройствами через проводные и/или беспроводные компьютерные сети.

В сетевой среде также часто полезно иметь возможность перемещать объекты между прикладными программами, которые выполняют разные задачи, причем некоторые прикладные программы выполняются локально, а другие прикладные программы выполняются удаленно, например на терминальном сервере. Терминальный сервер представляет собой компьютерную систему, обслуживающую прикладные программы, которые могут выполняться удаленно посредством клиентских компьютерных систем. Входная информация вводится в клиентскую компьютерную систему и передается по сети (например, с использованием протоколов на основе семейства протоколов ITU T.120, таких как, например, протокол удаленного рабочего стола (RDP)) прикладной программе на терминальном сервере. Прикладная программа обрабатывает входную информацию, как если бы входная информация была введена в терминальный сервер. Прикладная программа формирует выходную информацию в ответ на принятую входную информацию, и выходная информация передается по сети (например, также на основе протоколов T.120) в клиентскую компьютерную систему. Клиентская компьютерная система представляет выходные данные. Таким образом, входная информация принимается и выходная информация представляется в клиентской компьютерной системе, в то время как обработка фактически происходит на терминальном сервере.

Чтобы обеспечить возможность перемещения объектов между локальными и удаленными прикладными программами, некоторые сетевые компьютерные системы включают в себя функциональность буфера обмена, аналогичную той, которая используется в автономной среде. Часть памяти (или буфер обмена) выделяется и может взаимодействовать общим способом с прикладными программами в компьютерной системе. Таким образом, локальная прикладная программа может взаимодействовать с частью памяти, чтобы сохранить объект, и затем удаленная прикладная программа может взаимодействовать с частью памяти, чтобы извлечь объект, или наоборот. Таким образом, прикладные программы (даже те, которые выполняются на других компьютерных системах) могут обмениваться объектами через часть памяти.

Однако многим сетевым компьютерным системам недостает более удобной возможности перетаскивать объекты между локальными и удаленными прикладными программами и наоборот. Таким образом, клиентские и серверные компоненты терминального сервера обычно не выполнены с возможностью передавать перетаскиваемые объекты через сеанс терминального сервера и взаимодействовать с источником перетаскивания или целью перетаскивания для обеспечения выполнения передачи с помощью перетаскивания. Например, серверный компонент обычно не имеет способа определить, связано ли движение курсора мыши за пределами окна удаленного рабочего стола (в клиентской системе) с операцией перетаскивания или пользователь перемещает мышь по другим причинам.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для перетаскивания объектов между локальными и удаленными модулями. В некоторых вариантах осуществления объект перетаскивается из локальной прикладной программы в удаленную прикладную программу. Клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен извне в пределы границ окна удаленной прикладной программы. Клиентский компонент принимает уведомление об отпускании, указывающее на ожидающую обработки операцию перетаскивания. Уведомление об отпускании указывает, что перетаскиваемый объект должен быть передан в удаленную прикладную программу. Клиентский компонент отправляет серверной компьютерной системе запрос на передачу перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола через сеанс терминального сервера.

Серверный компонент принимает запрос и перенаправляет уведомление о передаче перетаскиваемого объекта удаленной прикладной программе. Серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени локальной прикладной программы в ответ на прием запроса на передачу перетаскиваемого объекта, что включает в себя прием запроса перетаскиваемого объекта от удаленной прикладной программы. Серверный компонент перенаправляет запрос перетаскиваемого объекта клиентскому компоненту через сеанс терминального сервера.

Клиентский компонент принимает запрос перетаскиваемого объекта от серверной компьютерной системы через сеанс терминального сервера. Клиентский компонент выступает в качестве уполномоченной цели перетаскивания от имени удаленной прикладной программы, что включает в себя перенаправление запроса перетаскиваемого объекта локальной прикладной программе и прием перетаскиваемого объекта от локальной прикладной программы. Клиентский компонент отправляет перетаскиваемый объект серверной компьютерной системе через сеанс терминального сервера.

Серверный компонент принимает перетаскиваемый объект от клиентского компонента через сеанс терминального сервера. Серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени локальной прикладной программы, что включает в себя отправку перетаскиваемого объекта удаленной прикладной программе.

В других вариантах осуществления объект перетаскивается из удаленной прикладной программы в локальную прикладную программу. Клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен изнутри за пределы границ удаленной прикладной программы. Клиентский компонент отправляет сообщение серверному компоненту через сеанс терминального сервера. Сообщение указывает серверному компоненту, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна удаленной прикладной программы.

Серверный компонент принимает сообщение от клиентского компонента через сеанс терминального сервера. Серверный компонент определяет, что движение курсора окна рабочего стола связано с ожидающей обработки операцией перетаскивания.

Клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы, что включает в себя прием запроса перетаскиваемого объекта от локальной прикладной программы. Запрос является показателем уведомления об отпускании в локальной прикладной программе и означает, что перетаскиваемый объект должен быть передан в локальную прикладную программу. Клиентский компонент отправляет запрос перетаскиваемого объекта серверному компоненту через сеанс терминального сервера.

Серверный компонент принимает запрос. Серверный компонент выступает в качестве уполномоченной цели перетаскивания от имени локальной прикладной программы, что включает в себя перенаправление запроса перетаскиваемого объекта удаленной прикладной программе и прием перетаскиваемого объекта от удаленной прикладной программы. Серверный компонент отправляет перетаскиваемый объект клиентской компьютерной системе через сеанс терминального сервера.

Клиентский компонент принимает перетаскиваемый объект. Клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы, что включает в себя отправку перетаскиваемого объекта локальной прикладной программе.

Это описание сущности изобретения дано для того, чтобы в упрощенной форме представить выбор концепций, которые далее описаны в подробном описании. Это описание сущности изобретения не предназначено для выявления ключевых признаков или основных признаков заявленного предмета, а также не предназначено для использования в качестве помощи в определении объема заявленного предмета.

Дополнительные признаки и преимущества будут изложены в последующем описании и отчасти будут очевидны из описания или могут быть изучены посредством применения изложенных здесь идей на практике. Признаки и преимущества изобретения могут быть поняты и получены посредством инструментов и комбинаций, особо указанных в приложенной формуле изобретения. Признаки настоящего изобретения станут более понятными из последующего описания и приложенной формулы изобретения или могут быть изучены посредством применения изложенного далее изобретения на практике.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Чтобы описать способ, которым могут быть получены упомянутые выше и другие преимущества и признаки, более подробное описание сущности предмета, кратко изложенной выше, будет выполнено со ссылкой на конкретные варианты осуществления, которые проиллюстрированы на приложенных чертежах. При понимании того, что эти чертежи изображают только типичные варианты осуществления и поэтому не должны рассматриваться как ограничивающие объем, варианты осуществления будут описаны и разъяснены более конкретно и подробно с помощью сопроводительных чертежей, на которых:

Фигура 1A показывает иллюстративную архитектуру компьютерной системы, которая обеспечивает выполнение перетаскивания объекта из локального модуля в удаленный модуль.

Фигура 1B показывает иллюстративное окно рабочего стола, изображающее операцию перетаскивания из локального модуля в удаленный модуль.

Фигуры 2A-2C показывают блок-схемы последовательности операций иллюстративного способа перетаскивания объекта из локального модуля в удаленный модуль.

Фигура 3A показывает иллюстративную архитектуру компьютерной системы, которая обеспечивает выполнение перетаскивания объекта из удаленного модуля в локальный модуль.

Фигура 3B показывает иллюстративное окно рабочего стола, изображающее операцию перетаскивания из удаленного модуля в локальный модуль.

Фигуры 4A-4C показывают блок-схемы последовательности операций иллюстративного способа перетаскивания объекта из удаленного модуля в локальный модуль.

ПОДРОБНОЕ ОПИСАНИЕ

Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для перетаскивания объектов между локальными и удаленными модулями. В некоторых вариантах осуществления объект перетаскивается из локальной прикладной программы в удаленную прикладную программу. Клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен извне в пределы границ окна удаленной прикладной программы. Клиентский компонент принимает уведомление об отпускании, указывающее на ожидающую обработки операцию перетаскивания. Уведомление об отпускании указывает, что перетаскиваемый объект должен быть передан в удаленную прикладную программу. Клиентский компонент отправляет серверной компьютерной системе запрос на передачу перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола через сеанс терминального сервера.

Серверный компонент принимает запрос и перенаправляет уведомление о передаче перетаскиваемого объекта удаленной прикладной программе. Серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени локальной прикладной программы в ответ на прием запроса на передачу перетаскиваемого объекта, что включает в себя прием запроса перетаскиваемого объекта от удаленной прикладной программы. Серверный компонент перенаправляет запрос перетаскиваемого объекта клиентскому компоненту через сеанс терминального сервера.

Клиентский компонент принимает запрос перетаскиваемого объекта от серверной компьютерной системы через сеанс терминального сервера. Клиентский компонент выступает в качестве уполномоченной цели перетаскивания от имени удаленной прикладной программы, что включает в себя перенаправление запроса перетаскиваемого объекта локальной прикладной программе и прием перетаскиваемого объекта от локальной прикладной программы. Клиентский компонент отправляет перетаскиваемый объект серверной компьютерной системе через сеанс терминального сервера.

Серверный компонент принимает перетаскиваемый объект от клиентского компонента через сеанс терминального сервера. Серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени локальной прикладной программы, что включает в себя отправку перетаскиваемого объекта удаленной прикладной программе.

В других вариантах осуществления объект перетаскивается из удаленной прикладной программы в локальную прикладную программу. Клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен изнутри за пределы границ удаленной прикладной программы. Клиентский компонент отправляет сообщение серверному компоненту через сеанс терминального сервера. Сообщение указывает серверному компоненту, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна удаленной прикладной программы.

Серверный компонент принимает сообщение от клиентского компонента через сеанс терминального сервера. Серверный компонент определяет, что движение курсора окна рабочего стола связано с ожидающей обработки операцией перетаскивания.

Клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы, что включает в себя прием опроса касаемо перетаскиваемого объекта от локальной прикладной программы. Опрос является показателем уведомления об отпускании в локальной прикладной программе и означает, что перетаскиваемый объект должен быть передан в локальную прикладную программу. Клиентский компонент отправляет запрос перетаскиваемого объекта серверному компоненту через сеанс терминального сервера.

Серверный компонент принимает запрос. Серверный компонент выступает в качестве уполномоченной цели перетаскивания от имени локальной прикладной программы, что включает в себя перенаправление запроса перетаскиваемого объекта удаленной прикладной программе и прием перетаскиваемого объекта от удаленной прикладной программы. Серверный компонент отправляет перетаскиваемый объект клиентской компьютерной системе через сеанс терминального сервера.

Клиентский компонент принимает перетаскиваемый объект. Клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы, что включает в себя отправку перетаскиваемого объекта локальной прикладной программе.

Варианты осуществления настоящего изобретения могут содержать специализированный или универсальный компьютер, включающий в себя различные аппаратные средства, как рассмотрено более подробно ниже. Варианты осуществления в рамках объема настоящего изобретения также включают в себя машиночитаемые носители для переноса или хранения на них исполняемых на компьютере команд или структур данных. Такие машиночитаемые носители могут являться любыми доступными носителями, к которым может получать доступ универсальный или специализированный компьютер. В качестве примера, но без ограничения, такие машиночитаемые носители могут содержать машиночитаемые носители данных, такие как оперативное запоминающее устройство (ОЗУ; RAM), постоянное запоминающее устройство (ПЗУ; ROM), электронно-стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ; EEPROM), компакт-диск, предназначенный только для чтения (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для хранения желаемого средства программного кода в виде исполняемых на компьютере команд или структур данных, и к которому может получать доступ универсальный или специализированный компьютер.

В этом описании и в последующей формуле изобретения "сеть" определена как одна или более линии передачи данных, которые обеспечивают возможность передачи электронных данных между компьютерными системами и/или модулями. Когда информация передается или предоставляется по сети или другому соединению связи (либо проводному, либо беспроводному, либо комбинации проводного или беспроводного) на компьютер, компьютер должным образом рассматривает соединение как машиночитаемый носитель. Таким образом, в качестве примера, но без ограничения, машиночитаемые носители могут содержать сеть или линии передачи данных, которые могут использоваться для переноса или хранения желаемого средства программного кода в виде исполняемых на компьютере команд или структур данных и к которому может получать доступ универсальный или специализированный компьютер.

Исполняемые на компьютере команды содержат, например, команды и данные, которые заставляют универсальный компьютер, специализированный компьютер или специализированное устройство обработки выполнять некоторую функцию или группу функций. Исполняемые на компьютере команды могут являться, например, двоичными данными, командами промежуточного формата, такого как язык ассемблера, или даже исходным кодом. Хотя предмет был описан на языке, специальном для структурных признаков и/или действий способов, следует понимать, что предмет, определенный в приложенной формуле изобретения, не обязательно ограничивается признаками или действиям, описанными выше. Описанные признаки и действия раскрыты в качестве иллюстративных форм реализации пунктов формулы изобретения.

Специалисты в области техники должны понимать, что изобретение может быть осуществлено в сетевых вычислительных средах с помощью многих типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, карманные устройства, мультипроцессорные системы, основанные на микропроцессорах или программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные вычислительные системы, мобильные телефоны, карманные компьютеры (PDA), пейджеры и т.п. Изобретение также может быть осуществлено в распределенных вычислительных средах, в которых задачи выполняют и локальные, и удаленные компьютерные системы, которые связаны (либо посредством проводных линий связи, либо посредством беспроводных линий связи, либо посредством комбинации проводных и беспроводных линий связи) через сеть. В распределенной вычислительной среде программные модули могут быть размещены и в локальных, и в удаленных запоминающих устройствах.

В этом описании и в последующей формуле изобретения "цель перетаскивания" определена как модуль, который должен принять объект, над которым производится операция перетаскивания.

В этом описании и в последующей формуле изобретения "источник перетаскивания" определен как модуль, из которого должен исходить объект, над которым производится операция перетаскивания.

В этом описании и в последующей формуле изобретения "уполномоченная цель перетаскивания" определена как модуль, относящийся к тому же сеансу, что и источник перетаскивания, который выступает в качестве посредника между источником перетаскивания и целью перетаскивания. Уполномоченная цель перетаскивания может эмулировать функциональность фактической цели перетаскивания, чтобы обеспечить выполнение операции перетаскивания через сеанс терминального сервера. В некоторых вариантах осуществления уполномоченная цель перетаскивания представляет собой компонент сеанса терминального сервера, который эмулирует функциональность цели перетаскивания и участвует в управлении сеансом терминального сервера.

В этом описании и в последующей формуле изобретения "уполномоченный источник перетаскивания" определен как модуль, относящийся к тому же сеансу, что и цель перетаскивания, который выступает в качестве посредника между источником перетаскивания и целью перетаскивания. Уполномоченный источник перетаскивания может эмулировать функциональность фактического источника перетаскивания, чтобы обеспечить выполнение операции перетаскивания через сеанс терминального сервера. В некоторых вариантах осуществления уполномоченный источник перетаскивания представляет собой компонент сеанса терминального сервера, который эмулирует функциональность источника перетаскивания и участвует в управлении сеансом терминального сервера.

В этом описании и в последующей формуле изобретения сообщения, передаваемые по сети, для обеспечения выполнения операции перетаскивания обычно определены следующим образом:

Сообщение START_DRAG_DROP: указание от уполномоченной цели перетаскивания для уполномоченного источника перетаскивания инициализировать модальный цикл перетаскивания. Сообщение может содержать имена и идентификаторы данных форматов, которые могут быть предоставлены.

Сообщение START_DRAG_DROP_RESPONSE: указание от уполномоченного источника перетаскивания для цели перетаскивания, что модальный цикл перетаскивания начался.

Сообщение UPDATE_DROP_EFFECT: указывает обновленный эффект перетаскивания для цели перетаскивания. То есть, что хотела бы сделать с данными цель перетаскивания.

Сообщение STOP_DRAG_DROP: указание от уполномоченной цели перетаскивания для уполномоченного источника перетаскивания остановить операцию перетаскивания.

Сообщение DO_DRAG_DROP: указание от уполномоченной цели перетаскивания для уполномоченного источника перетаскивания инициализировать операцию отпускания. Сообщение Drop, являющееся показателем сообщения DO_DRAG_DROP, отправленного по сети, может быть перенаправлено цели перетаскивания через технологию связывания и встраивания объектов (OLE). В ответ на сообщение Drop цель перетаскивания может запросить уполномоченный объект данных и вызвать метод GetData.

Сообщение DO_DRAG_DROP_RESPONSE: указание от уполномоченного источника перетаскивания, что операция перетаскивания завершена (например, отправленное в ответ на сообщение DO_DRAG_DROP).

Сообщение FORMAT_DATA_REQUEST: отправляется уполномоченным объектом данных уполномоченной цели перетаскивания, когда целью перетаскивания запрашиваются данные.

Сообщение FORMAT_DATA_RESPONSE: отправляется уполномоченной целью перетаскивания уполномоченному объекту данных и содержит любые запрашиваемые данные.

Другие сообщения также могут быть отправлены через сеть для обеспечения выполнения операции перетаскивания.

Фигура 1A показывает иллюстративную компьютерную архитектуру 100, которая обеспечивает выполнение перетаскивания объекта из локального модуля в удаленный модуль. Компьютерная система 101 (например, клиент) и компьютерная система 111 (например, сервер). Компьютерные системы 101 и 111 могут быть соединены с сетью, такой как, например, локальная сеть (LAN), глобальная сеть (WAN) или даже Интернет. Таким образом, различные компоненты в компьютерных системах 101 и 111 могут принимать и отправлять данные друг другу, а также другим компонентам, соединенным с сетью. В соответствии с этим компоненты могут создавать относящиеся к сообщениям данные и обмениваться относящимися к сообщениям данными по сети (например, с помощью датаграмм протокола Интернета (IP) и других протоколов более высокого уровня, которые используют датаграммы IP, таких как, протокол управления передачей (TCP), протокол удаленного рабочего стола (RDP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP), независимая архитектура вычислительных систем (ICA) и т.д.).

Как показано, компьютерная система 101 включает в себя прикладную программу 102, клиентский модуль 106 и пользовательский интерфейс 104, и компьютерная система 111 включает в себя прикладную программу 112 и серверный модуль 116. Компьютерная система 101 и компьютерная система 111 взаимодействуют друг с другом через сеанс 131 терминального сервера (например, сеанс протокола RDP), установленный по сети. Клиентский компонент 106 и серверный компонент 116 могут взаимодействовать, чтобы обеспечить управление сеансом 131 терминального сервера. Например, передавать пользовательский ввод, принятый в пользовательском интерфейсе 104 от компьютерной системы 101 в компьютерную систему 111, перенаправлять пользовательский ввод соответствующим удаленным прикладным программам в компьютерной системе 111, принимать выходную информацию от удаленных прикладных программ в компьютерной системе 111, передавать выходную информацию удаленных прикладных программ от компьютерной системы 111 в компьютерную систему 101 и выводить выходную информацию удаленных прикладных программ в пользовательском интерфейсе 104. Таким образом, для удаленных прикладных программ (с точки зрения пользовательского интерфейса 104) входная информация принимается и выходная информация представляется в компьютерной системе 101, в то время как обработка фактически происходит в компьютерной системе 111.

Виртуальные каналы могут использоваться для расширения функциональности сеанса терминального сервера (например, посредством расширения протокола RDP), предоставляя прикладным программам возможность передавать свои данные через сеанс терминального сервера (например, через соединение протокола RDP). Таким образом, в дополнение к данным ввода и вывода по виртуальным каналам могут передаваться другие типы данных. Например, виртуальный канал 121 может являться каналом, выполненным с возможностью передавать перетаскиваемые объекты из компьютерной системы 101 в компьютерную систему 111. Виртуальный канал 121 может соединить поток перетаскивания в клиентском компоненте 106 с потоком перетаскивания в серверном компоненте 116 и наоборот. В соответствии с этим клиентский компонент 106 и серверный компонент 116 могут взаимодействовать для выполнения перетаскивания данных по виртуальному каналу 121 между соответствующими прикладными программами в компьютерной системе 101 и компьютерной системе 111.

Фигура 1B показывает иллюстративное окно 123 рабочего стола, изображающее операцию перетаскивания из локального модуля в удаленный модуль. Как показано, окно 123 рабочего стола является частью пользовательского интерфейса 104 и включает в себя окно 102W прикладной программы и удаленный рабочий стол 113. Окно 102W прикладной программы соответствует прикладной программе 102 и выполнено с возможностью принимать пользовательский ввод для прикладной программы 102 и представлять пользователю выходную информацию от прикладной программы 102. Удаленный рабочий стол 113 включает в себя окна прикладных программ для любых прикладных программ, которые являются удаленными от компьютерной системы 111. Например, окно 112W прикладной программы соответствует прикладной программе 112 и выполнено с возможностью принимать пользовательский ввод для прикладной программы 112 и представлять пользователю выходную информацию от прикладной программы 112.

Фигуры 2A-2C иллюстрируют блок-схемы последовательности операций иллюстративного способа 200 перетаскивания объекта из локального модуля в удаленный модуль. Способ 200 будет описан относительно компонентов и данных в компьютерной архитектуре 100.

Способ 200 включает в себя этап выбора перетаскиваемого объекта из окна локальной прикладной программы (этап 201). Например, пользователь компьютерной системы 101 может выбрать объект 126 в окне 102W прикладной программы. Объект 126 может являться практически любым выбираемым объектом в компьютерной системе, таким как, например, часть текстовых, графических или звуковых данных, ячейка электронной таблицы, запись базы данных, электронное сообщение и т.д.

Способ 200 включает в себя этап модификации курсора окна рабочего стола для визуального представления, что выбран объект перетаскивания (этап 202). Например, после выбора объекта 126 курсор 133 может быть модифицирован, чтобы в него был включен индикатор 134 эффекта перетаскивания. Эффекты перетаскивания могут включать в себя любое действие из перемещения, копирования, создания ссылки, создания гиперссылки и создания ярлыка для выбранного объекта. Курсор 133 может быть по-разному модифицирован или дополнен, чтобы указать разные эффекты перетаскивания. Например, может быть отображен индикатор 134 эффекта перетаскивания, чтобы указать, что эффект перетаскивания является копированием.

Эффект перетаскивания может быть выбран из эффектов перетаскивания, доступных для прикладной программы. По мере перемещения курсора 133 между разными окнами окна 123 рабочего стола представленный индикатор эффекта перетаскивания может меняться. Например, пока курсор 133 находится в пределах границ окна 102W прикладной программы, может отображаться эффект перетаскивания по умолчанию для прикладной программы 102 (например, копирование). Когда курсор 133 находится вне границ какого-либо окна прикладной программы, может отображаться эффект перетаскивания по умолчанию для окна 123 рабочего стола (например, операционная система). Например, для окна 123 рабочего стола функциональность перетаскивания может не поддерживаться вообще, и поэтому курсор 133 преобразовывается в символ "не разрешено", когда он находится в этой области пользовательского интерфейса 104. После входа в окно 112W прикладной программы может отображаться эффект перетаскивания по умолчанию для прикладной программы 112 (например, копирование).

Способ 200 включает в себя этап, на котором клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен извне в пределы границ окна удаленной прикладной программы (этап 203). Например, клиентский компонент 106 может обнаружить, что курсор 133 был перемещен извне в пределы границ окна 112W прикладной программы. (Пунктирная линия на фигуре 1B указывает путь курсора 133 из окна 102W прикладной программы через окно 123 рабочего стола и удаленный рабочий стол 113 в окно 112W прикладной программы).

Этапы 201, 202 и 203 могут быть включены в подготовку к операции перетаскивания для передачи объекта из локальной прикладной программы в удаленную прикладную программу. Когда курсор 134 проходит над окном 112W прикладной программы, клиентский компонент 106 может вызвать метод DragEnter. Через метод DragEnter клиентский компонент 106 (выступающий в качестве уполномоченной цели перетаскивания) может показать прикладной программе 102, может ли он принять объект 126. Параметры метода DragEnter могут иметь следующий формат:

HRESULT DragEnter (

IDataObject* pDataObject, //объект данных источника (например объект 126).

DWORD dwKeyState, // Состояние клавиатуры и мыши.

POINTL pt, //Позиция курсора.

DWORD* pdwDropEffect // Результирующий эффект перетаскивания.

)

Через метод DragEnter цель (или уполномоченная цель) может указать, сможет ли она принять возможное отпускание, посредством обновления параметра pdwDropEffect. Этот параметр может первоначально содержать набор эффектов перетаскивания, которые разрешает источник. Результирующий эффект перетаскивания частично основан на форматах, предоставляемых объектом данных, и также на него может влиять текущее состояние клавиатуры и мыши, а потенциально даже позиция мыши.

Далее клиентский компонент 106 может отправить сообщение START_DRAG_DROP по виртуальному каналу 121 (например, виртуальному каналу буфера обмена) серверному компоненту 116. Сообщение START_DRAG_DROP может включать в себя названия форматов, описывающие содержание объекта 126, и разрешенные эффекты перетаскивания прикладной программы 102. После того как это сообщение отправлено, обработчику ввода в компьютерной системе 101 сообщается (например, через событие операционной системы), что началась операция перетаскивания. В ответ на это событие обработчик ввода может отключить перехват событий клавиатуры и синхронизацию ввода. Чтобы удостовериться, что запросы данных формата могут быть выполнены перед тем, как произойдет отпускание, объект 126 может быть сохранен.

Когда сообщение START_DRAG_DROP принято в серверном компоненте 116, названия форматов, описывающие содержание объекта 126, и разрешенные эффекты перетаскивания прикладной программы 102 извлекаются. В ответ создается уполномоченный объект 136 данных, и создается окно для серверного компонента 116. Окно может быть сделано прозрачным (или иным образом скрытым) и может иметь очень небольшой размер (например, 1 × 1 пиксель). Окну дается фокус ввода, и оно помещается на самом верху по оси z. Таким образом, ввод может быть направлен (прикреплен) к окну для того, чтобы направить ввод к серверному компоненту 116. Также ввод может быть направлен к серверному компоненту 116 без значительного изменения окна 123 рабочего стола. Например, прозрачное окно размером 1 × 1 пиксель является потенциально незаметным для пользователя.

В ответ на принятое событие нажатия кнопки мыши серверный компонент 116 (уполномоченный источник перетаскивания) вызывает метод DoDragDrop. Параметры метода DoDragDrop могут иметь следующий формат:

HRESULT DoDragDrop (

IDataObject* pDataObject, // Объект данных источника.

IDropSource* pDropSource, // Интерфейс источника перетаскивания.

DWORD dwAllowedDropEffects, // Разрешенные эффекты перетаскивания.

DWORD* pdwFinalDropEffect // Конечный эффект перетаскивания.

)

Метод DoDragDrop может быть включен в модальный цикл, используемый для обеспечения выполнения операции перетаскивания. Обычно, чтобы начать операцию перетаскивания, компонент вызывает метод DoDragDrop с соответствующими параметрами. Метод DoDragDrop захватывает ввод мыши с использованием API функции SetCapture и затем входит в цикл.

Чтобы перенаправить ввод к серверному компоненту 116, обработчик ввода отправляет событие нажатия кнопки мыши клиентскому компоненту 106, и поскольку ввод мыши был направлен (потенциально маленькому и прозрачному) окну для серверного компонента 116, событие нажатия кнопки мыши завершается тем, что оно отправляется во входную очередь серверного компонента 116. Прием события нажатия кнопки мыши может быть использован для конфигурирования скрытого окна технологии связывания и встраивания объектов (OLE) для приема системных сообщений о событиях мыши. Прием сообщения START_DRAG_DROP_RESPONSE также инициирует переключение логического флага, который проверяют методы в клиентском компоненте 106 перед выполнением. Это увеличивает вероятность отправки сообщений, когда серверный компонент 116 является активным.

Пока курсор 133 перетаскивается по окну 112W прикладной программы, вызывается метод DragOver. Параметры метода DragOver могут иметь следующий формат:

HRESULT DragOver (

DWORD dwKeyState, // Состояние клавиатуры и мыши.

POINTL pt, //Позиция курсора.

DWORD* pdwDropEffect // Результирующий эффект перетаскивания.

)

Во время вызовов метода DragOver текущая позиция мыши, состояние кнопок мыши и состояние клавиатуры могут быть проверены на предмет изменений. Если изменения обнаружены, обработчик ввода для клиентского компонента 106 отправляет соответствующее сообщение о перемещении мыши, нажатии или отпускании кнопки мыши или нажатии или отпускании клавиши клавиатуры серверному компоненту 116.

Серверный компонент 116 (уполномоченный источник перетаскивания) может неоднократно вызывать метод QueryContinueDrag. Параметры метода QueryContinueDrag могут иметь следующий формат:

HRESULT QueryContinueDrag (

BOOL fEscapePressed, //TRUE, если была нажата клавиша ESC.

DWORD dwKeyState // Состояние клавиатуры и мыши.

)

Метод QueryContinueDrag может использоваться для того, чтобы сообщить источнику перетаскивания (или уполномоченному источнику перетаскивания) о текущем состоянии клавиатуры и мыши. На основе этого ввода источник перетаскивания (или уполномоченный источник перетаскивания) может решить продолжить перетаскивание, отменить перетаскивание или разрешить произойти отпусканию. Источник перетаскивания указывает свое решение через возвращаемое значение HRESULT. Например, значение S_OK может указать продолжение, значение DRAGDROP_S_CANCEL может указать отмену, и значение DRAGDROP_S_DROP может указать разрешение отпускания. Пока курсор 133 находится над окном 112W прикладной программы, метод QueryContinueDrag может возвращать значение S_OK, поскольку отмена или операция отпускания еще не произошла.

Серверный компонент 116 также может вызвать метод GiveFeedback, чтобы возвратить эффект перетаскивания (перемещение, копирование, создание ссылки и т.д.) прикладной программы 112 клиентскому компоненту 106. Параметры метода GiveFeedback могут иметь следующий формат:

HRESULT GiveFeedback (

DWORD dwDropEffect // Текущий эффект перетаскивания цели (например, прикладной программы 112).

)

Обычно способ GiveFeedback сообщает источнику перетаскивания (или уполномоченному источнику перетаскивания) о текущем эффекте перетаскивания, с тем чтобы он мог дать соответствующую визуальную обратную связь. Визуальная обратная связь указывается через возвращаемое значение HRESULT. Значение S_OK означает, что источник установил курсор соответствующим образом, в то время как значение DRAGDROP_S_USEDEFAULTCURSORS указывает, что источник удовлетворен использованием предоставляемых технологией OLE курсоров по умолчанию.

Когда серверный компонент 116 вызывает метод GiveFeedback, эффект перетаскивания прикладной программы 112 отправляется от серверного компонента 116 клиентскому компоненту 106 по виртуальному каналу 121 в сообщении UPDATE_DROP_EFFECT. Клиентский компонент 106 сохраняет эффект перетаскивания и возвращает эффект перетаскивания прикладной программе 102 (например, посредством вызова метода DragOver).

На основе состояния мыши и клавиатуры в компьютерной системе 101 прикладная программа 102 может в итоге решить отменить операцию перетаскивания или разрешить произойти отпусканию. Таким образом, в некоторых вариантах осуществления операция перетаскивания отменяется (и, таким образом, отпускание не происходит). Если происходит отмена, клиентскому компоненту 106 (уполномоченной цели перетаскивания) сообщают об этом через метод DragLeave, например, имеющий следующий формат:

HRESULT DragLeave ();

Обработчик событий для серверного компонента 116 может сохранить результат отмены, указанный в сообщении STOP_DRAG_DROP. Таким образом, при следующем вызове метода QueryContinueDrag он возвращает значение DRAGDROP_S_CANCEL, заставляя закончить операцию перетаскивания в компьютерной системе 111.

В других вариантах осуществления происходит отпускание. Соответственно, способ 200 включает в себя этап инициализации операции отпускания (этап 204). Например, прикладная программа 102 может инициализировать операцию отпускания, чтобы передать объект 126 в прикладную программу 112. Пользователь может манипулировать устройством ввода, чтобы заставить инициализировать отпускание. Например, пользователь может отпустить левую кнопку мыши, пока курсор 133 находится над окном 112W прикладной программы.

Способ 200 включает в себя этап приема уведомления об отпускании, указывающего, что перетаскиваемый объект должен быть передан в удаленную прикладную программу (этап 205). Например, клиентский компонент 106 может принять уведомление об отпускании, указывающее, что объект 126 должен быть передан в прикладную программу 112 как часть ожидающей обработки операции перетаскивания. Способ 200 включает в себя этап отправки запроса на передачу перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола (этап 206). Например, в ответ на получение уведомления об отпускании клиентский компонент 106 может отправить сообщение DO_DRAG_DROP серверному компоненту 116 для запроса на передачу объекта 126 в прикладную программу 112. Сообщение DO_DRAG_DROP может быть отправлено по виртуальному каналу 121 и может включать в себя координаты местоположения курсора 133.

Способ 200 включает в себя этап приема запроса на передачу перетаскиваемого объекта и координат местоположения курсора окна рабочего стола (этап 207). Например, серверный компонент 116 может принять сообщение DO_DRAG_DROP, запрашивающее передачу объекта 126 в прикладную программу 112. Когда сообщение DO_DRAG_DROP приходит на серверный компонент 116, обработчик событий сохраняет указание о том, что должно произойти отпускание. Таким образом, когда затем вызывается метод QueryContinueDrag, метод QueryContinueDrag возвращает значение DRAGDROP_S_DROP (показывающее, что должно произойти отпускание). Однако, прежде чем возвратить это значение, клиентскому компоненту 106 может быть отправлено сообщение GIVE_FOCUS.

При приеме сообщения GIVE_FOCUS клиентский компонент 106 может получить фокус ввода посредством вызова API функции SetForegroundWindow.

Серверный компонент 116 также может отправить сообщение DO_DRAG_DROP_RESPONSE клиентскому компоненту 106 по виртуальному каналу 121.

Способ 200 включает в себя этап перенаправления уведомления о передаче перетаскиваемого объекта соответствующей прикладной программе (этап 208). Например, серверный компонент 116 может перенаправить уведомление об отпускании для объекта 126 прикладной программе 112 на основании координат местоположения курсора 133 (например, находящегося над окном 112W прикладной программы). Способ 200 включает в себя этап приема уведомления о передаче перетаскиваемого объекта (этап 209). Например, прикладная программа 112 может принять уведомление об отпускании для объекта 126 от серверного компонента 116.

Способ 200 включает в себя этап запроса перетаскиваемого объекта (этап 210). Например, прикладная программа 112 может запросить объект 126 от серверного компонента 116. Способ 200 включает в себя этап приема запроса перетаскиваемого объекта от соответствующей прикладной программы (этап 211). Например, серверный компонент 116 может принять запрос объекта 126 от прикладной программы 112. Серверный компонент 116 может обнаружить вызов метода GetData для уполномоченного объекта 136.

Способ 200 включает в себя этап отправки запроса перетаскиваемого объекта клиентскому компоненту (этап 212). Например, серверный компонент 116 может отправить сообщение FORMAT_DATA_REQUEST клиентскому компоненту 106 по виртуальному каналу 121. Сообщение FORMAT_DATA_REQUEST запрашивает объект 126 для прикладной программы 102. Способ 200 включает в себя этап приема запроса перетаскиваемого объекта от серверного компонента (этап 213). Например, клиентский компонент 106 может принять сообщение FORMAT_DATA_REQUEST от серверного компонента 116 по виртуальному каналу 121.

Способ 200 включает в себя этап перенаправления запроса перетаскиваемого объекта локальной прикладной программе (этап 214). Например, клиентский компонент 106 может перенаправить запрос объекта 126 прикладной программе 102. Способ 200 включает в себя этап приема запроса перетаскиваемого объекта (этап 215). Например, прикладная программа 102 может принять запрос объекта 126.

В некоторых вариантах осуществления обработчик событий для сообщения FORMAT_DATA_REQUEST использует ссылку для перетаскиваемого объекта, сохраненную в методе DragEnter, для выполнения вызова GetData. Когда данные формата получены, они соответствующим образом кодируются.

Способ 200 включает в себя этап отправки перетаскиваемого объекта (этап 216). Например, после приема возвращенных форматов и эффектов перетаскивания прикладная программа 102 может отправить объект 126 клиентскому компоненту 106. Способ 200 включает в себя этап приема перетаскиваемого объекта от локальной прикладной программы (этап 217). Например, клиентский компонент 106 может принять объект 126 от прикладной программы 102.

Способ 200 включает в себя этап отправки перетаскиваемого объекта серверному компоненту (этап 218). Например, клиентский компонент 106 может отправить сообщение FORMAT_DATA_RESPONSE, включающее в себя данные из объекта 126, серверному компоненту 116 по виртуальному каналу 121. Способ 200 включает в себя этап приема перетаскиваемого объекта от клиентского компонента (этап 219). Например, серверный компонент 116 может принять сообщение FORMAT_DATA_RESPONSE, включающее в себя данные из объекта 126, от клиентского компонента 106 по виртуальному каналу 121.

Способ 200 включает в себя этап перенаправления перетаскиваемого объекта удаленной прикладной программе (этап 220). Например, серверный компонент 116 может перенаправить данные из объекта 126 прикладной программе 112. Способ 200 включает в себя этап приема перетаскиваемого объекта (этап 221). Например, прикладная программа 112 может принять данные из объекта 126. Соответственно, в зависимости от выбранного эффекта перетаскивания данные из объекта 126 перемещаются, копируются, для них создается ссылка, гиперссылка или ярлык из прикладной программы 102 в прикладную программу 112.

В некоторых вариантах осуществления соответствующим образом закодированные данные затем передаются по сети в сообщении FORMAT_DATA_RESPONSE. При приеме этого сообщения FORMAT_DATA_RESPONSE в серверном компоненте 116 вызывается соответствующий обработчик событий, и форматированные данные извлекаются и декодируются. Когда обработчик событий завершает исполнение, форматированные данные возвращаются цели перетаскивания, приводя к завершению вызов метода Drop локальной цели перетаскивания.

Когда вызов метода Drop закончен, цикл метода DoDragDrop завершается, и возвращается эффект перетаскивания (например, серверному компоненту 116). У перетаскиваемого объекта запрашиваются форматы PerformedDropEffect и LogicalPerformedDropEffect. Эти два формата, а также конечный эффект перетаскивания и значение HRESULT метода DoDragDrop отправляются локально клиентскому компоненту 106 в сообщении DO_DRAG_DROP_RESPONSE. Серверный компонент 116 возвращает эти результаты своему уполномоченному методу Drop. При приеме сообщения DO_DRAG_DROP_RESPONSE обработчик событий в клиентском компоненте 106 сохраняет результаты. Уполномоченный метод Drop серверного компонента 116 продолжает выполнение, инициализируя объект 126 с помощью возвращенных форматов и возвращая эффект перетаскивания и значение HRESULT подсистеме OLE.

Клиентский компонент 106 (уполномоченная цель перетаскивания) и серверный компонент 116 (уполномоченный источник перетаскивания) могут быть выполнены с возможностью по-другому обеспечивать реализацию способа 200.

Например, клиентский компонент 106 (уполномоченная цель перетаскивания) может быть выполнен с возможностью указывать, когда должен начаться модальный цикл перетаскивания. Клиентский компонент 106 может отправить сообщение START_DRAG_DROP по виртуальному каналу 121 серверному компоненту 116. Когда сообщение START_DRAG_DROP обработано, серверный компонент 116 (уполномоченный источник перетаскивания) может запустить модальный цикл перетаскивания для прикладной программы 112 (цели перетаскивания).

Клиентский компонент 106 также может быть выполнен с возможностью отправлять списки форматов, которые может поддерживать прикладная программа 102 (источник перетаскивания). Одним из параметров для метода DragEnter является указатель на объект данных, содержащий данные, которые прикладная программа 102 может предоставить. С использованием перечислителя форматов названия форматов извлекаются из этого объекта данных, кодируются и затем отправляются в качестве параметра в сообщении START_DRAG_DROP, с тем чтобы серверным компонентом 116 мог быть создан уполномоченный объект данных.

Клиентский компонент 106 также может быть выполнен с возможностью обновлять удаленную позицию мыши, состояние кнопок и состояние клавиатуры. Прежде чем запустить модальный цикл перетаскивания, серверный компонент 116 может отправить сообщение START_DRAG_DROP_RESPONSE по виртуальному каналу 121. Когда это сообщение принято клиентским компонентом 106, запускается метод DragOver клиентского компонента 106, чтобы начать отправлять обновления текущей позиции мыши, состояния кнопок мыши и состояния клавиатуры серверному компоненту 116. Состояния для кнопок мыши и клавиш клавиатуры получаются из параметров, переданных методу DragOver. Эти обновления компенсирует прикладной программе 102 обладание фокусом ввода и захват мыши.

Клиентский компонент 106 также может быть выполнен с возможностью возвращать последний эффект перетаскивания, принятый от серверного компонента 116. Серверный компонент 116 может отправлять сообщения UPDATE_DROP_EFFECT клиентскому компоненту 106 всякий раз, когда прикладная программа 112 изменяет эффект перетаскивания. Как часть обработки метода DragOver, обновленные эффекты перетаскивания возвращаются подсистеме OLE компьютерной системы 101, чтобы информировать прикладную программу 102 о текущем эффекте перетаскивания.

Клиентский компонент 106 также может быть выполнен с возможностью обновлять состояние текущей операции перетаскивания для серверного компонента 116. Если был вызван метод DragLeave, то прикладная программа 102 решила отменить операцию перетаскивания. Соответственно, прикладная программа 112 должна сделать то же самое и вызвать свой метод DragLeave. Клиентский компонент 106 может передать соответствующую информацию серверному компоненту 116, чтобы заставить прикладную программу 112 вызывать свой метод DragLeave.

Клиентский компонент 106 также может быть выполнен с возможностью сохранять указатель на объект 126, если происходит отпускание. Если происходит отпускание, то прикладная программа 112 может запросить объект 126. Чтобы помочь обеспечить возможность возвращения объекта 126, клиентский компонент 106 может сохранить указатель на объект 126, принятый в вызове метода Drop. Таким образом, когда запрос объекта принят в виде сообщения FORMAT_DATA_REQUEST, клиентский компонент 116 может обеспечить соответствующие данные формата посредством выполнения вызова метода GetData для сохраненного объекта 126 и возвратить данные в сообщении FORMAT_DATA_RESPONSE.

Серверный компонент 116 может быть выполнен с возможностью создавать уполномоченный объект данных, объявляющий правильные имена форматов. Одним из параметров сообщения START_DRAG_DROP является список форматов, которые прикладная программа 112 может предоставить. Прежде чем запускается удаленный модальный цикл, уполномоченный объект данных создается и заполняется этими названиями форматов. Созданный объект данных затем передается подсистеме OLE компьютерной системы 111 в качестве параметра в вызове метода DoDragDrop. Таким образом, цели перетаскивания в пределах удаленного сеанса будут иметь возможность запросить форматы и извлечь данные, если произойдет отпускание.

Серверный компонент 116 также может быть выполнен с возможностью передавать текущий эффект перетаскивания клиентскому компоненту 106. Эффект перетаскивания, который прикладная программа 112 возвращает подсистеме OLE компьютерной системы 111, передается клиентскому компоненту 106 как часть вызова метода GiveFeedback. Этот эффект перетаскивания отправляется по виртуальному каналу 121 компьютерной системе 101 в сообщении UPDATE_DROP_EFFECT, с тем чтобы клиентский компонент 106 мог возвратить этот эффект перетаскивания, когда вызывается его метод DragOver.

Серверный компонент 116 также может быть выполнен с возможностью инициализировать отмену или отпускание, когда ему дана команда клиентским компонентом 106. Когда в компьютерной системе 101 происходит операция отпускания или отмены, может быть вызван метод Drop или метод DragLeave клиентского компонента 106. Когда это случается, серверному компоненту 116 отправляется сообщение, с тем чтобы при следующем вызове метода QueryContinueDrag правильное значение HRESULT могло быть возвращено подсистеме OLE компьютерной системы 111. Если было принято сообщение STOP_DRAG_DROP, то возвращается значение DRAGDROP_S_CANCEL. Значение DRAGDROP_S_DROP возвращается, если было принято сообщение DO_DRAG_DROP. В ином случае возвращается значение S_OK, и модальный цикл продолжается.

Уполномоченный объект 136 может быть создан, когда принято сообщение START_DRAG_DROP. Уполномоченный объект 136 по существу имитирует объект 126 посредством возвращения тех же самых форматов, которые объявляет объект 126. Когда у уполномоченного объекта 136 запрашиваются данные, он отправляет сообщение FORMAT_DATA_REQUEST компьютерной системе 101. Затем клиентский компонент 106 может извлечь данные из объекта 126 и отсылает данные обратно в сообщении FORMAT_DATA_RESPONSE.

В соответствии с этим варианты осуществления настоящего изобретения могут обеспечить выполнение перетаскивания объектов из локального модуля в удаленный модуль.

Фигура 3A показывает иллюстративную компьютерную архитектуру 300, которая обеспечивает выполнение перетаскивания объекта из модуля удаленного рабочего стола в модуль локального рабочего стола. Компьютерная система 301 (например, клиент) и компьютерная система 311 (например, сервер). Компьютерные системы 301 и 311 могут быть соединены с сетью, такой как, например, локальная сеть (LAN), глобальная сеть (WAN) или даже Интернет. Таким образом, различные компоненты в компьютерных системах 301 и 311 могут принимать и отправлять данные друг другу, а также другим компонентам, соединенным с сетью. В соответствии с этим компоненты могут создавать относящиеся к сообщениям данные и обмениваться относящимися к сообщениям данными по сети (например, с помощью датаграмм протокола Интернета (IP) и других протоколов более высокого уровня, которые используют датаграммы IP, таких как протокол управления передачей (TCP), протокол удаленного рабочего стола (RDP), протокол передачи гипертекста (HTTP), простой протокол передачи почты (SMTP), независимая архитектура вычислительных систем (ICA) и т.д.).

Как показано, компьютерная система 301 включает в себя прикладную программу 302, клиентский модуль 306 и пользовательский интерфейс 304, и компьютерная система 311 включает в себя прикладную программу 312 и серверный модуль 316. Компьютерная система 301 и компьютерная система 311 взаимодействуют друг с другом через сеанс 331 терминального сервера (например, сеанс протокола RDP), установленный по сети. Клиентский компонент 306 и серверный компонент 316 могут взаимодействовать, чтобы обеспечить управление сеансом 331 терминального сервера. Например, передавать пользовательский ввод, принятый в пользовательском интерфейсе 304 от компьютерной системы 301 в компьютерную систему 311, перенаправлять пользовательский ввод соответствующим удаленным прикладным программам в компьютерной системе 311, принимать выходную информацию от удаленных прикладных программ в компьютерной системе 311, передавать выходную информацию удаленных прикладных программ от компьютерной системы 311 в компьютерную систему 301 и выводить выходную информацию удаленных прикладных программ в пользовательском интерфейсе 304. Таким образом, для удаленных прикладных программ (с точки зрения пользовательского интерфейса 304) входная информация принимается и выходная информация представляется в компьютерной системе 301, в то время как обработка фактически происходит в компьютерной системе 311.

Виртуальный канал 321 может являться каналом, выполненным с возможностью передавать перетаскиваемые объекты из компьютерной системы 311 в компьютерную систему 301. Виртуальный канал 321 может соединить поток перетаскивания в клиентском компоненте 306 с потоком перетаскивания в серверном компоненте 316 и наоборот. В соответствии с этим клиентский компонент 306 и серверный компонент 316 могут взаимодействовать для передачи перетаскиваемых данных по виртуальному каналу 321 между соответствующими прикладными программами в компьютерной системе 301 и компьютерной системе 311.

Фигура 3B показывает иллюстративное окно 323 рабочего стола, изображающее операцию перетаскивания из удаленного модуля в локальный модуль. Как показано, окно 323 рабочего стола является частью пользовательского интерфейса 304 и включает в себя окно 302W прикладной программы и удаленный рабочий стол 313. Окно 302W прикладной программы соответствует прикладной программе 302 и выполненное с возможностью принимать пользовательский ввод для прикладной программы 302 и представлять пользователю выходную информацию от прикладной программы 302. Удаленный рабочий стол 313 включает в себя окна прикладных программ для любых прикладных программ, которые являются удаленными от компьютерной системы 311. Например, окно 312W прикладной программы соответствует прикладной программе 312 и выполнено с возможностью принимать пользовательский ввод для прикладной программы 312 и представлять пользователю выходную информацию от прикладной программы 312.

Фигуры 4A-4C иллюстрируют блок-схемы последовательности операций иллюстративного способа 400 перетаскивания объекта из удаленного модуля в локальный модуль. Способ 400 будет описан относительно компонентов и данных в компьютерной архитектуре 300.

Способ 400 включает в себя этап выбора перетаскиваемого объекта из окна удаленной прикладной программы (этап 401). Например, пользователь компьютерной системы 301 может выбрать объект 326 в окне 312W прикладной программы. Объект 326 может являться практически любым выбираемым объектом в компьютерной системе, таким как, например, часть текстовых, графических или звуковых данных, ячейка электронной таблицы, запись базы данных, электронное сообщение и т.д.

Способ 400 включает в себя этап модификации курсора окна рабочего стола для визуального представления, что выбран объект перетаскивания (этап 402). Например, после выбора объекта 326 курсор 333 может быть модифицирован, чтобы в него был включен индикатор 334 эффекта перетаскивания. Эффекты перетаскивания могут включать в себя любое действие из перемещения, копирования, создания ссылки, создания гиперссылки и создания ярлыка для выбранного объекта. Курсор 333 может быть по-разному модифицирован или дополнен, чтобы указать разные эффекты перетаскивания. Например, может быть отображен индикатор 334 эффекта перетаскивания, чтобы указать, что эффект перетаскивания является перемещением.

Эффект перетаскивания может быть выбран из эффектов перетаскивания, доступных для прикладной программы. По мере перемещения курсора 333 между разными окнами окна 323 рабочего стола, представленный индикатор эффекта перетаскивания может меняться. Например, пока курсор 333 находится в пределах границ окна 312W прикладной программы, может отображаться эффект перетаскивания по умолчанию для прикладной программы 312 (например, копирование). Когда курсор 333 находится вне границ какого-либо окна прикладной программы, может отображаться эффект перетаскивания по умолчанию для окна 323 рабочего стола (например, операционная система). Например, для окна 323 рабочего стола функциональность перетаскивания может не поддерживаться вообще, и поэтому курсор 333 преобразовывается в символ "не разрешено", когда он находится в этой области пользовательского интерфейса 304. После входа в окно 302W прикладной программы может отображаться эффект перетаскивания по умолчанию для прикладной программы 302 (например, перемещение).

Способ 400 включает в себя этап, на котором клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен извне в пределы границ окна локальной прикладной программы (этап 403). Например, клиентский компонент 306 может обнаружить, что курсор 333 был перемещен извне в пределы границ окна 302W прикладной программы. (Пунктирная линия на фигуре 3B указывает путь курсора 333 из окна 312W прикладной программы через удаленный рабочий стол 313 и окно 323 рабочего стола в окно 302W прикладной программы).

Способ 400 включает в себя этап отправки сообщения, указывающего, что курсор окна рабочего стола переместился (этап 404). Например, клиентский компонент 306 может отправить сообщение MOUSE_HAS_LEFT серверному компоненту 316 по виртуальному каналу 321. Сообщение MOUSE_HAS_LEFT указывает, что курсор 333 переместился за пределы окна 312W прикладной программы (и/или из удаленного рабочего стола 313). Способ 400 включает в себя этап приема сообщения, указывающего, что курсор окна рабочего стола переместился (этап 405). Например, серверный компонент 316 может принять сообщение MOUSE_HAS_LEFT по виртуальному каналу 321 от клиентского компонента 306.

Способ 400 включает в себя этап определения, что перемещение курсора окна рабочего стола связано с ожидающей обработки операцией перетаскивания (этап 406). Например, серверный компонент 316 может определить, что перемещение курсора за границы окна 313 прикладной программы связано с операцией перетаскивания для объекта 326. Серверный компонент 316 может вызвать API функцию общей объектной модели (СOM) для запроса, является ли фактическая операция перетаскивания ожидающей обработки или мышь перемещается по другим причинам.

Этапы 401, 402, 403, 404 и 405 могут быть включены в подготовку операции перетаскивания из удаленного модуля в локальный модуль. Например, когда пользователь нажимает кнопку мыши в клиентском окне, мышь захватывается окном обработчика ввода. Пока мышь перетаскивают, мышь может неоднократно проверяться для определения, находится ли она все еще на окне обработчика ввода. Если мышь не находится над окном обработчика ввода, то возможно было начато перетаскивание из удаленного модуля в локальный модуль. После обнаружения, что мышь покинула удаленный модуль, сообщение MOUSE_HAS_LEFT отправляется серверному компоненту 316 по виртуальному каналу.

После получения этого сообщения серверный компонент 316 переходит в состояние уполномоченной цели перетаскивания. Переход к уполномоченной цели перетаскивания может быть выполнен с использованием по меньшей мере двух разных механизмов. Один механизм включает в себя максимизирование окна перетаскивания с полупрозрачностью, чтобы оно заполнило всю полезную площадь экрана сессии, и затем размещение окна перетаскивания с полупрозрачностью на самом верху по оси z. Другой механизм включает в себя вызовы API функций OLE.

После перехода к уполномоченной цели перетаскивания серверный компонент 316 может выступать в качестве уполномоченной цели перетаскивания в удаленном сеансе. Например, после того как серверный компонент стал уполномоченной целью перетаскивания, для серверного компонента 316 может быть вызван метод DragEnter. Метод DragEnter заставляет сохранить объект 326 и отправить сообщение START_DRAG_DROP клиентскому компоненту 306.

Сообщение START_DRAG_DROP может быть обработано обработчиком событий в клиентском компоненте 306. Обработчик событий может извлечь названия форматов и разрешенные эффекты перетаскивания. В ответ клиентский компонент 306 может инициализировать событие DO_MODAL_LOOP, чтобы сообщить обработчику ввода для компьютерной системы 301, что должен быть запущен локальный цикл перетаскивания. После получения события DO_MODAL_LOOP обработчик ввода создает уполномоченный объект 328 и перенаправляет события уведомления перетаскивания клиентскому компоненту 306. Тем самым заставляя клиентский компонент 306 перейти в состояние уполномоченного источника перетаскивания.

Событие уведомления перетаскивания может быть переадресовано посредством отключения приемников событий на потоке перетаскивания и включения специально созданных приемников событий для клиентского компонента 306. Прежде чем запускается модальный цикл DoDragDrop, потоку перетаскивания может быть подан сигнал, чтобы сообщить ему, что цикл начинается. В ответ клиентский компонент 306 может отправить сообщение START_DRAG_DROP_RESPONSE серверному компоненту 316. При приеме сообщения START_DRAG_DROP_RESPONSE серверный компонент 316 начинает отправлять сообщения перетаскивания, такие как, например, сообщения DO_DRAG_DROP и STOP_DRAG_DROP, клиентскому компоненту 306.

Однако, пока мышь перетаскивается в окне 302W прикладной программы, могут быть интересны различные события кнопок мыши и клавиш клавиатуры. Метод QueryContinueDrag для прикладной программы 312 (удаленной прикладной программы) может использоваться для получения обновлений этой информации. Чтобы сообщить серверному компоненту 316 об обновлениях текущего состояния ввода, обработчик ввода отправляет соответствующие события нажатия или отпускания кнопок мыши и нажатия или отпускания клавиш клавиатуры. Метод GiveFeedback вызывается на клиентском компоненте 306, чтобы сообщить серверному компоненту 316 об обновлениях эффекта перетаскивания, возвращенного прикладной программой 302, посредством отправки сообщения UPDATE_DROP_EFFECT. В компьютерной системе 311 эффект перетаскивания сохраняется и позже возвращается в методе DragOver, вызываемом серверным компонентом 316.

На основе состояния мыши и клавиатуры в компьютерной системе 301 прикладная программа 312 может в итоге решить отменить операцию перетаскивания или разрешить произойти отпусканию. Таким образом, в некоторых вариантах осуществления операция перетаскивания отменяется (и, таким образом, отпускание не происходит). Если происходит отмена, серверному компоненту 316 (уполномоченной цели перетаскивания) сообщают об этом через метод DragLeave.

В ответ на отмену серверный компонент 316 также может отправить сообщение STOP_DRAG_DROP клиентскому компоненту 306. После того как сообщение STOP_DRAG_DROP было отправлено, объект 326 может быть освобожден. Обработчик событий для клиентского компонента 306 может сохранить результат отмены, обозначенный в сообщении STOP_DRAG_DROP. Таким образом, при следующем вызове метода QueryContinueDrag он возвращает значение DRAGDROP_S_CANCEL, заставляя завершить операцию перетаскивания в компьютерной системе 301.

В других вариантах осуществления происходит отпускание. Когда пользователь перемещает мышь по локальному окну 302W прикладной программы, пользователь может отпустить кнопку мыши. Когда кнопка мыши отпущена, клиентский компонент 306 указывает об отпускании серверному компоненту 316 по виртуальному каналу 321. В ответ серверный компонент 316 может отправить сообщение DO_DRAG_DROP клиентскому компоненту 306, чтобы запросить передачу объекта 326 прикладной программе 302. Серверный компонент 316 может отправить указание относительно сообщения DO_DRAG_DROP прикладной программе 302. Клиентский компонент 306 может отправить сообщение DO_DRAG_DROP_RESPONSE серверному компоненту 316 по виртуальному каналу 321.

Способ 400 включает в себя этап отправки опроса касаемо перетаскиваемого объекта (этап 407). Например, в ответ на индикацию относительно сообщения DO_DRAG_DROP прикладная программа 302 может запросить уполномоченный объект 328. Способ 400 включает этап приема опроса касаемо перетаскиваемого объекта от локальной прикладной программы (этап 408). Например, клиентский компонент 306 может принять опрос касаемо объекта 326 от прикладной программы 302.

Способ 400 включает в себя этап отправки запроса перетаскиваемого объекта серверному компоненту (этап 409). Например, клиентский компонент 306 может отправить сообщение FORMAT_DATA_REQUEST серверному компоненту 316 по виртуальному каналу 321. Сообщение FORMAT_DATA_REQUEST запрашивает объект 326 для прикладной программы 312. Способ 400 включает в себя этап приема запроса перетаскиваемого объекта от клиентского компонента (этап 410). Например, серверный компонент 316 может принять сообщение FORMAT_DATA_REQUEST от клиентского компонента 306 по виртуальному каналу 321.

Способ 400 включает в себя этап перенаправления запроса перетаскиваемого объекта удаленной прикладной программе (этап 411). Например, серверный компонент 316 может перенаправить запрос объекта 326 прикладной программе 312. Способ 400 включает в себя этап приема запроса перетаскиваемого объекта (этап 412). Например, прикладная программа 312 может принять запрос объекта 326 от серверного компонента 316.

Способ 400 включает в себя этап отправки перетаскиваемого объекта (этап 413). Например, прикладная программа 312 может отправить объект 326 серверному компоненту 316. Способ 400 включает в себя этап приема перетаскиваемого объекта от удаленной прикладной программы (этап 414). Например, серверный компонент 316 может принять объект 326 от прикладной программы 312.

Способ 400 включает в себя этап отправки перетаскиваемого объекта клиентскому компоненту (этап 415). Например, серверный компонент 316 может отправить сообщение FORMAT_DATA_RESPONSE, включающее в себя данные из объекта 326, клиентскому компоненту 306 по виртуальному каналу 321. Способ 400 включает в себя этап приема перетаскиваемого объекта от серверного компонента (этап 416). Например, клиентский компонент 306 может принять сообщение FORMAT_DATA_RESPONSE, включающее в себя данные из объекта 326, от серверного компонента 316 по виртуальному каналу 321.

Способ 400 включает в себя этап перенаправления перетаскиваемого объекта локальной прикладной программе (этап 417). Например, клиентский компонент 306 может отправить данные из объекта 326 прикладной программе 312. Способ 400 включает в себя этап приема перетаскиваемого объекта (этап 418). Например, прикладная программа 302 может принять данные из объекта 306 от клиентского компонента 306. Соответственно, в зависимости от выбранного эффекта перетаскивания данные из объекта 326 перемещаются, копируются, для них создается ссылка, гиперссылка или ярлык из прикладной программы 312 в прикладную программу 302.

Клиентский компонент 306 (уполномоченный источник перетаскивания) и серверный компонент 316 (уполномоченная цель перетаскивания) могут быть выполнены с возможностью по-другому обеспечивать реализацию способа 400.

Например, клиентский компонент 306 (уполномоченный источник перетаскивания) может быть выполнен с возможностью создавать уполномоченный объект данных, объявляющий правильные названия форматов, передавать текущий эффект перетаскивания серверному компоненту 316, указывать отмену или отпускание, когда ему дана команда серверным компонентом 316, и обновлять состояние кнопок мыши и состояние клавиатуры в пределах окна 312W прикладной программы. Метод QueryContinueDrag может использоваться для приема вектора состояния, содержащий состояния клавиш клавиатуры и кнопок мыши. Состояния клавиш клавиатуры и кнопок мыши может быть отправлено серверному компоненту 316 через виртуальный канал 321.

Серверный компонент 316 (уполномоченная цель перетаскивания) может быть выполнен с возможностью указывать, когда должен начаться модальный цикл перетаскивания, отправлять список форматов, которые прикладная программа 312 может предоставить, возвращать прикладной программе 312 последний эффект перетаскивания, принятый от клиентского компонента 306, сообщать клиентскому компоненту 306 об обновлениях состояния ожидающей обработки операции перетаскивания и сохранять объект 326 указателя, если произошло отпускание.

Уполномоченный объект 328 данных может быть создан, когда принято сообщение START_DRAG_DROP. Уполномоченный объект 328 данных по существу имитирует объект 326 посредством возвращения тех же самых форматов, которые объявляет объект 326. Когда у уполномоченного объекта 328 запрашиваются данные, он отправляет сообщение FORMAT_DATA_REQUEST компьютерной системе 311. Затем серверный компонент 316 может извлечь данные из объекта 326 и отсылает данные обратно в сообщении FORMAT_DATA_RESPONSE.

В соответствии с этим варианты осуществления настоящего изобретения могут обеспечить перетаскивание объектов из удаленного модуля в локальный модуль.

Настоящее изобретение может быть воплощено в других конкретных формах без отступления от его сущности или существенных характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях лишь как иллюстративные и не ограничивающие. Таким образом, объем изобретения указан посредством приложенной формулы изобретения, а не посредством предшествующего описания. Все изменения, которые находятся в пределах значения и диапазона эквивалентности формулы изобретения, должны быть охвачены ее объемом.

1. Способ, реализуемый в компьютерной системе, включающей в себя локальную прикладную программу, выполняющуюся в компьютерной системе, и клиентский компонент, принимающий участие в сеансе терминального сервера с серверным компонентом на серверной компьютерной системе, при этом способ предназначен для использования перетаскивания и отпускания для переноса объекта из локальной прикладной программы в удаленный модуль в серверной компьютерной системе, причем способ содержит:
этап, на котором принимают пользовательский ввод, которым выбирается перетаскиваемый объект из пределов окна локальной прикладной программы, причем данное окно локальной прикладной программы представляет пользовательский интерфейс для локальной прикладной программы;
этап, на котором клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен извне в пределы границ окна удаленной прикладной программы;
этап, на котором клиентский компонент принимает уведомление об отпускании, указывающее ожидающую обработки операцию перетаскивания, причем уведомление об отпускании указывает, что перетаскиваемый объект должен быть перенесен в удаленную прикладную программу;
этап, на котором клиентский компонент отправляет сообщение начала перетаскивания на серверный компонент, так что по приему этого сообщения начала перетаскивания серверным компонентом инициируется модальный цикл перетаскивания для удаленного приложения;
этап, на котором клиентский компонент отправляет запрос на перенос перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола в серверную компьютерную систему через сеанс терминального сервера в ответ на прием уведомления об отпускании;
этап, на котором клиентский компонент принимает запрос перетаскиваемого объекта от серверной компьютерной системы через сеанс терминального сервера;
при этом клиентский компонент выступает в качестве уполномоченной цели перетаскивания от имени удаленной прикладной программы в ответ на прием запроса перетаскиваемого объекта, что включает в себя:
этап, на котором перенаправляют запрос перетаскиваемого объекта локальной прикладной программе,
этап, на котором принимают от локальной прикладной программы перетаскиваемый объект, отправленный в ответ на запрос перетаскиваемого объекта, и
этап, на котором клиентский компонент отправляет перетаскиваемый объект серверной компьютерной системе через сеанс терминального сервера для доставки удаленной прикладной программе.

2. Способ по п.1, дополнительно содержащий этап, на котором конфигурируют клиентский компонент как уполномоченную цель перетаскивания, с тем чтобы клиентский компонент мог принимать перетаскиваемые объекты от локальной прикладной программы.

3. Способ по п.1, дополнительно содержащий этап, на котором модифицируют курсор окна рабочего стола для визуального представления того, что перетаскиваемый объект был выбран.

4. Способ по п.1, в котором этап обнаружения того, что курсор окна рабочего стола был перемещен извне в пределы границ окна удаленной прикладной программы, содержит этап, на котором обнаруживают, что курсор окна рабочего стола переместился из границ окна локальной прикладной программы в пределы границ окна удаленной прикладной программы.

5. Способ по п.1, в котором этап, на котором клиентский компонент принимает уведомление об отпускании, указывающее ожидающую обработки операцию перетаскивания, содержит этап, на котором обнаруживают изменение состояния кнопок на устройстве ввода.

6. Способ по п.1, в котором этап, на котором клиентский компонент отправляет запрос на перенос перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола серверной компьютерной системе через сеанс терминального сервера, содержит этап, на котором отправляют сообщение по виртуальному каналу сеанса терминального сервера.

7. Способ по п.1, в котором этап, на котором клиентский компонент отправляет запрос на перенос перетаскиваемого объекта вместе с координатами местоположения курсора окна рабочего стола серверной компьютерной системе через сеанс терминального сервера, содержит этап, на котором отправляют сообщение через сеанс протокола удаленного рабочего стола (RDP).

8. Способ по п.1, дополнительно содержащий этап, на котором принимают ответ начать перетаскивание.

9. Способ по п.1, дополнительно содержащий, в ответ на инициирование модального цикла перетаскивания для удаленного приложения, этап, на котором создают окно для серверного компонента в серверной компьютерной системе, и этап, на котором клиентский компонент отправляет событие нажатия кнопки мыши в окно для серверного компонента, так что окно получает фокус и в результате окно в серверной компьютерной системе принимает последующий ввод посредством мыши в компьютерную систему.

10. Способ, реализуемый в компьютерной системе, включающей в себя одну или более удаленных прикладных программ, выполняющихся в компьютерной системе, и серверный компонент, принимающий участие в сеансе терминального сервера с клиентским компонентом в клиентской компьютерной системе, причем эти одна или более удаленных прикладных программ, выполняющихся в компьютерной системе, выполнены доступными через сеанс терминального сервера для клиентской компьютерной системы, при этом способ предназначен для использования перетаскивания и отпускания для переноса объекта в одну из упомянутых одной или более удаленных прикладных программ из модуля в клиентской компьютерной системе, причем способ содержит:
этап, на котором серверный компонент принимает сообщение начала перетаскивания от клиентского компонента, так что по приему сообщения начала перетаскивания серверный компонент инициирует модальный цикл перетаскивания для удаленной прикладной программы;
этап, на котором серверный компонент принимает запрос на перенос перетаскиваемого объекта в компьютерную систему и координаты местоположения, указывающие местоположение курсора окна рабочего стола в клиентской компьютерной системе, причем запрос и координаты местоположения отправляются через сеанс терминального сервера;
этап, на котором серверный компонент перенаправляет уведомление о переносе перетаскиваемого объекта удаленной прикладной программе, соответствующей координатам местоположения;
этап, на котором серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени прикладной программы в клиентской компьютерной системе в ответ на прием запроса на перенос перетаскиваемого объекта, что включает в себя этап, на котором серверный компонент принимает запрос перетаскиваемого объекта от удаленной прикладной программы;
этап, на котором серверный компонент перенаправляет запрос перетаскиваемого объекта клиентскому компоненту через сеанс терминального сервера;
этап, на котором серверный компонент принимает перетаскиваемый объект от клиентского компонента через сеанс терминального сервера; и
этап, на котором серверный компонент выступает в качестве уполномоченного источника перетаскивания от имени прикладной программы в клиентской компьютерной системе в ответ на прием перетаскиваемого объекта, что включает в себя этап, на котором серверный компонент отправляет перетаскиваемый объект удаленной прикладной программе.

11. Способ по п.10, в котором этап, на котором серверный компонент принимает запрос на перенос перетаскиваемого объекта компьютерной системе и координаты местоположения, указывающие местоположение курсора окна рабочего стола в клиентской компьютерной системе, содержит этап, на котором принимают сообщение по виртуальному каналу сеанса терминального сервера.

12. Способ по п.10, дополнительно содержащий этап, на котором создают уполномоченный объект для имитации форматов, объявляемых перетаскиваемым объектом.

13. Способ по п.10, дополнительно содержащий этап, на котором конфигурируют серверный компонент как уполномоченный источник перетаскивания, с тем чтобы серверный компонент мог предоставлять перетаскиваемые объекты удаленной прикладной программе.

14. Способ, реализуемый в компьютерной системе, включающей в себя локальную прикладную программу, выполняющуюся в компьютерной системе, и клиентский компонент, принимающий участие в сеансе терминального сервера с серверным компонентом в серверной компьютерной системе, при этом способ предназначен для использования перетаскивания и отпускания для переноса объекта из удаленного модуля в серверной компьютерной системе в локальную прикладную программу, причем способ содержит:
этап, на котором принимают пользовательский ввод, которым выбирается перетаскиваемый объект из пределов окна удаленной прикладной программы, причем данное окно локальной прикладной программы представляет пользовательский интерфейс для удаленной прикладной программы в клиентской компьютерной системе;
этап, на котором клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна удаленной прикладной программы;
этап, на котором клиентский компонент отправляет сообщение серверному компоненту через сеанс терминального сервера, причем сообщение указывает серверному компоненту, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна удаленной прикладной программы, так что в ответ на данное сообщение серверный компонент определяет, что перемещение мыши соответствует операции перетаскивания;
этап, на котором клиентский компонент принимает от серверного компонента сообщение начала перетаскивания и, в ответ на него, инициирует модальный цикл перетаскивания в клиентской компьютерной системе;
этап, на котором клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы в ответ на прием запроса перетаскиваемого объекта, что включает в себя этап, на котором клиентский компонент принимает опрос касаемо перетаскиваемого объекта от локальной прикладной программы, причем данный опрос является показателем уведомления об отпускании в локальной прикладной программе и представляет то, что перетаскиваемый объект должен быть передан в локальную прикладную программу;
этап, на котором клиентский компонент отправляет запрос перетаскиваемого объекта серверному компоненту, причем этот запрос отправляется через сеанс терминального сервера в ответ на упомянутый опрос, при этом данный запрос указывает серверному компоненту, что локальная прикладная программа запрашивает перетаскиваемый объект;
этап, на котором клиентский компонент принимает перетаскиваемый объект от серверной компьютерной системы через сеанс терминального сервера; и
этап, на котором клиентский компонент выступает в качестве уполномоченного источника перетаскивания от имени удаленной прикладной программы в ответ на прием перетаскиваемого объекта, что включает в себя этап, на котором клиентский компонент отправляет перетаскиваемый объект локальной прикладной программе.

15. Способ по п.14, в котором этап, на котором клиентский компонент обнаруживает, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна удаленной прикладной программы, содержит этап, на котором обнаруживают, что курсор окна рабочего стола был перемещен из окна удаленной прикладной программы в окно локальной прикладной программы.

16. Способ по п.14, дополнительно содержащий этап, на котором создают уполномоченный объект для имитации форматов, объявляемых перетаскиваемым объектом.

17. Способ по п.14, дополнительно содержащий этап, на котором конфигурируют клиентский компонент как уполномоченный источник перетаскивания, с тем чтобы клиентский компонент мог предоставлять перетаскиваемые объекты клиентскому компоненту.

18. Способ по п.14, дополнительно содержащий этап, на котором модифицируют курсор окна рабочего стола для визуального представления того, что перетаскиваемый объект был выбран.

19. Способ, реализуемый в компьютерной системе, включающей в себя одну или более удаленных прикладных программ, выполняющихся в компьютерной системе, и серверный компонент, принимающий участие в сеансе терминального сервера с клиентским компонентом в клиентской компьютерной системе, причем эти одна или более удаленных прикладных программ, выполняющихся в компьютерной системе, выполнены доступными удаленно через сеанс терминального сервера для клиентской компьютерной системы, при этом способ предназначен для использования перетаскивания и отпускания для переноса объекта из удаленной прикладной программы в модуль в клиентской компьютерной системе, причем способ содержит:
этап, на котором серверный компонент принимает сообщение от клиентского компонента через сеанс терминального сервера, причем сообщение указывает серверному компоненту, что курсор окна рабочего стола был перемещен изнутри за пределы границ окна, соответствующего удаленной прикладной программе, в клиентской компьютерной системе;
этап, на котором серверный компонент определяет, что движение курсора окна рабочего стола относится к ожидающей обработки операции перетаскивания;
этап, на котором серверный компонент посылает сообщение начала перетаскивания в клиентский компонент, так что в ответ на прием сообщения начала перетаскивания клиентский компонент инициирует модальный цикл перетаскивания в клиентской компьютерной системе;
этап, на котором серверный компонент принимает запрос перетаскиваемого объекта от клиентского компонента, причем этот запрос отправляется через сеанс терминального сервера в ответ на опрос касаемо перетаскиваемого объекта от прикладной программы в клиентской компьютерной системе, причем данный запрос указывает серверному компоненту, что прикладная программа в клиентском компоненте запрашивает перетаскиваемый объект из удаленной прикладной программы;
при этом серверный компонент выступает в качестве уполномоченной цели перетаскивания от имени прикладной программы в клиентской компьютерной системе в ответ на прием запроса перетаскиваемого объекта, что включает в себя:
этап, на котором перенаправляют запрос перетаскиваемого объекта удаленной прикладной программе, и
этап, на котором принимают от удаленной прикладной программы перетаскиваемый объект, отправленный в ответ на запрос перетаскиваемого объекта; и
этап, на котором серверный компонент отправляет перетаскиваемый объект клиентской компьютерной системе через сеанс терминального сервера для доставки в прикладную программу в клиентской компьютерной системе.

20. Способ по п.19, дополнительно содержащий этап, на котором конфигурируют серверный компонент как уполномоченную цель перетаскивания, с тем чтобы серверный компонент мог принимать перетаскиваемые объекты от удаленной прикладной программы.

21. Способ по п.19, дополнительно содержащий этап, на котором серверный компонент принимает ответ начать перетаскивание.

22. Способ по п.19, в котором этап, на котором серверный компонент отправляет перетаскиваемый объект клиентской компьютерной системе через сеанс терминального сервера, содержит этап на котором серверный компонент отправляет перетаскиваемый объект по виртуальному каналу сеанса протокола удаленного рабочего стола (RDP).



 

Похожие патенты:

Изобретение относится к многопроцессорным архитектурам. .

Изобретение относится к системам и методам создания описания и сравнения функционала исполняемых файлов и предназначено для определения принадлежности исполняемых файлов к известным коллекциям файлов.

Изобретение относится к области электронных загрузок программного обеспечения. .

Изобретение относится к способам импортирования, управления и размещения драйверов. .

Изобретение относится к объектно-ориентированному программированию, а более конкретно к формированию отношений между программными элементами. .

Изобретение относится к обеспечению возможности применения команды изменения графического окна для дистанционно сгенерированного графического окна. .

Изобретение относится к области создания заданий обработки данных конечным пользователем. .

Изобретение относится к области вычислительной техники и управления приоритетами системы. .

Изобретение относится к области обновления программы мобильного терминала с помощью беспроводного (Over-the-Air, ОТА) механизма программирования. .

Изобретение относится к способам и устройствам для локализации данных, включенных в прикладные программы. .

Изобретение относится к системе и способу для обеспечения индикаторов пользователю, которые связаны со скоростью визуальной прокрутки в интерфейсе пользователя. .

Изобретение относится к электронным устройствам ввода и вывода информации. .

Изобретение относится к области мобильных электронных устройств, имеющих пользовательский интерфейс для приема сенсорного ввода. .

Изобретение относится к области мобильных электронных устройств, имеющих пользовательский интерфейс для приема сенсорного ввода. .

Изобретение относится к вычислительной технике. .
Изобретение относится к электронной технике и, в частности, к электронным устройствам с сенсорной панелью, дисплеем и джойстиком. .

Изобретение относится к измерительной технике для управления электронными калибраторами (эталонами физических величин). .

Изобретение относится к области измерений сигналов с постоянной составляющей, в том числе для учета электрической энергии. .

Изобретение относится к области вычислительной техники и служит для управления телевизором с использованием мультимодального интерфейса (ММИ). .

Изобретение относится к области виртуальных машин. .
Наверх