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

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в возможности использования устройств ввода совместно с визуальными признаками, чтобы непосредственно передавать объекты между локальными и удаленными прикладными программами. Способ использования перетаскивания и отпускания для переноса объекта из локальной прикладной программы в удаленный модуль в серверной компьютерной системе. Компоненты терминального сервера эмулируют функциональность участников операции перетаскивания для обеспечения выполнения перетаскивания объектов между локальными и удаленными модулями и наоборот. Компоненты терминального сервера взаимодействуют локально для взаимодействия с модулями, принимающими участие в операции перетаскивания. Компоненты терминального сервера также отправляют сообщения через сеанс терминального сервера для передачи соответствующей информации о перетаскивании соответствующим компонентам терминального сервера на другом конце сеанса терминального сервера. 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. Также ввод может быть направлен к сервер