СПОСОБ, СИСТЕМА И УСТРОЙСТВО, ОБЕСПЕЧИВАЮЩИЕ ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР ДОКУМЕНТА
PREVIEW METHOD, SYSTEM AND DEVICE

Перекрестная ссылка на родственные заявки
Эта заявка на патент относится к одновременно поданной заявке на американской патент (регистрационный номер патентного поверенного 60046.432US01) под названием "Method And Computer-Readable Medium For Previewing And Performing Actions On Attachments To Electronic Mail Messages", которая явным образом включена сюда в качестве ссылки.
Предшествующий уровень техники
При использовании компьютерной системы, на которой установлена современная графическая операционная система, часто требуется обеспечить предварительный просмотр документа. Предварительный просмотр документа представляет собой визуальное отображение документа, предназначенное только для чтения, которое копирует то, что видел бы пользователь, если бы документ был открыт с использованием прикладной программы, связанной с этим документом. Некоторые прикладные программы позволяют пользователю просматривать статическое изображение документа, но статическое изображение не предоставляет настоящей возможности предварительного просмотра, при использовании которой пользователь может перелистывать страницы или перемещаться (осуществлять навигацию) по документу. Другие программы требуют, чтобы пользователь запускал прикладную программу, ассоциированную с документом, для просмотра его содержания. Например, в прикладной программе клиента электронной почты иногда требуется обеспечить предварительный просмотр одного или нескольких документов, присоединенных к сообщению электронной почты. Однако используемые в настоящее время прикладные программы электронной почты требуют, чтобы пользователь запустил прикладную программу, ассоциированную с прикрепленным документом, для просмотра этого документа. Этот процесс может быть трудоемким и является утомительным для пользователя.
Также требуется обеспечить предварительный просмотр документа с учетом различного контекста. Например, может быть желательно обеспечить предварительный просмотр документа в пределах контекста прикладной программы, например, такой как описанная выше прикладная программа клиента электронной почты. Также может быть желательно обеспечить предварительный просмотр документа с учетом контекста программы операционной системы, такой как графическая оболочка рабочего стола. Например, когда пользователь использует оболочку для перемещения к папке, содержащей документы, пользователю может потребоваться выполнять быстрый предварительный просмотр документов без необходимости запуска связанной с ними прикладной программы. Аналогично, может быть желательно выполнять быстрый предварительный просмотр документа в контексте диалогового окна, используемого для открытия файлов. При этом пользователь может предварительно просматривать документ и быстро проверять содержание документа без необходимости открывать прикладную программу, связанную с документом. Однако для предварительного просмотра документов с использованием существующих систем, каждая прикладная программа и операционная система должна выполнять свой собственный код для предварительного просмотра документов.
Также может быть желательно обеспечить возможность быстрого предварительного просмотра документов с учетом различных контекстов, без влияния на работоспособность компьютерной системы. Кроме того, любые ошибки, возникающие при предварительном просмотре документа, не должны влиять на работу или стабильность главной операционной системы или прикладной программы. Варианты выполнения настоящего изобретение представлены с учетом этих и других условий.
Сущность изобретения
В соответствии с вариантами выполнения настоящего изобретения, указанные выше и другие проблемы решаются с помощью способа, системы и устройства, обеспечивающих предварительный просмотр документа. Варианты выполнения изобретения обеспечивают общее средство, которое можно использовать программами операционной системы и прикладными программами для обеспечения быстрого предварительного просмотра документа, без необходимости запуска прикладной программы, ассоциированной с документом. Средства, предоставляемые в соответствии с различными вариантами выполнения изобретения, позволяют обеспечить предварительный просмотр, с возможностью перелистывания страниц и перемещения по документу. Варианты выполнения также обеспечивают средство для предварительного просмотра, которое не оказывает значительного влияния на работу или стабильность компьютерной системы. В соответствии с одним аспектом изобретения, предложен способ генерирования предварительного просмотра документа. В соответствии с этим способом, предусмотрен обработчик предварительного просмотра, который предоставляет интерфейс обработчика предварительного просмотра, который может быть вызван главными прикладными программами, для которых требуется отобразить предварительный просмотр документа. Например, прикладная программа клиента электронной почты может содержать главную прикладную программу и может вызывать интерфейс обработчика предварительного просмотра для отображения предварительного просмотра документа, присоединенного к сообщению электронной почты. С помощью интерфейса обработчика предварительного просмотра обработчик предварительного просмотра позволяет идентифицировать средство предварительного просмотра для отображения предварительного просмотра документа, для загрузки средства предварительного просмотра и для выдачи инструкций средству предварительного просмотра на построение и отображение предварительного просмотра.
Для того чтобы построить и отобразить предварительный просмотр, главная прикладная программа может вызывать интерфейс обработчика предварительного просмотра с запросом на загрузку документа для предварительного просмотра. Такой запрос может включать в себя путь к документу и описатель для окна, в котором требуется отобразить предварительный просмотр. В ответ на прием запроса, обработчик предварительного просмотра может идентифицировать соответствующее средство предварительного просмотра для генерирования предварительного просмотра документа. Средство предварительного просмотра может быть идентифицировано посредством выполнения запроса к необязательному интерфейсу, обеспечиваемому главной прикладной программой, путем поиска в реестре в отношении зарегистрированных средств предварительного просмотра, или с использованием других средств.
После того, как средство предварительного просмотра будет идентифицировано для типа документа, обработчик предварительного просмотра может вызывать интерфейс, предоставляемый средством предварительного просмотра, для выдачи инструкций средству предварительного просмотра на загрузку документа. Обработчик предварительного просмотра также может вызывать интерфейс предварительного просмотра для предварительного просмотра документа в пределах подокна окна, идентифицированного главной прикладной программой. Средство предварительного просмотра может исполняться в пространстве отдельного процесса, с тем чтобы не влиять на работу главной прикладной программы. По аналогичным причинам, связь между обработчиком предварительного просмотра и средством предварительного просмотра может быть организована с использованием фонового потока.
Множество дополнительных интерфейсов может быть реализовано главной прикладной программой для использования со средством предварительного просмотра. В частности, главной прикладной программой может быть предоставлен сигнальный интерфейс, через который средство предварительного просмотра может запрашивать у главной прикладной программы разрешение загрузить поддерживающие файлы, необходимые для генерирования предварительного просмотра документа. Интерфейс хода выполнения может быть реализован главной прикладной программой, через который средство предварительного просмотра может предоставлять индикатор хода выполнения, например хода выполнения загрузки документа и генерирования предварительного просмотра. Также может быть предоставлен интерфейс, через который средство предварительного просмотра может получать интерфейс для обнаружения места расположения дополнительных файлов, необходимых для генерирования предварительного просмотра документа.
Варианты выполнения изобретения могут быть реализованы как компьютерный процесс, компьютерная система или как промышленное изделие, такое как компьютерный программный продукт или машиночитаемый носитель. Компьютерный программный продукт может представлять собой компьютерный носитель информации, считываемый компьютерной системой, на котором закодирована компьютерная программа в виде инструкций, предназначенных для выполнения компьютерного процесса. Компьютерный программный продукт также может представлять собой сигнал, распространяемый на несущей частоте, считываемый компьютерной системой, в котором закодирована компьютерная программа в виде инструкций для выполнения компьютерного процесса.
Эти и различные другие свойства, а также преимущества, характеризующие настоящее изобретение, будут очевидны из чтения следующего подробного описания и просмотра приложенных чертежей.
Перечень фигур чертежей
Фиг.1 - схема архитектуры компьютерной системы, иллюстрирующая компьютерную систему, используемую и обеспечиваемую различными вариантами выполнения изобретения;
фиг.2 - схема архитектуры программного средства, иллюстрирующая аспекты различных программных компонентов и интерфейсов, обеспечиваемых вариантами выполнения изобретения; и
фиг.3-5 - блок-схемы последовательности операций, иллюстрирующие работу различных программных компонентов, предусмотренных в вариантах выполнения изобретения для обеспечения предварительного просмотра документа.
Подробное описание изобретения
Со ссылкой на чертежи, на которых одинаковыми ссылочными позициями обозначены одинаковые элементы, будут представлены различные аспекты настоящего изобретения. В частности Фиг.1 и соответствующее описание предназначены для представления короткого, общего описания соответствующей вычислительной среды, в которой могут быть реализованы варианты выполнения изобретения. Хотя изобретение будет описано в общем контексте программных модулей, которые выполняются совместно с программными модулями, выполняемыми в операционной системе персонального компьютера, для специалиста в данной области техники будет понятно, что изобретение также может быть реализовано в комбинации с другими типами компьютерных систем и программных модулей.
Обычно программные модули включают процедуры, программы, компоненты, структуры данных и другие типы структур, которые выполняют определенные задачи или воплощают определенные абстрактные типы данных. Кроме того, для специалистов в данной области техники будет понятно, что изобретение может быть реализовано на практике с другими конфигурациями компьютерной системы, включая портативные устройства, многопроцессорные системы или электронные бытовые устройства, построенные на основе микропроцессора или программируемые устройства, микрокомпьютеры, универсальные компьютеры (мэйнфреймы) и т.п. Изобретение также может быть реализовано на практике в виде распределенных вычислительных сред, задачи которых выполняются удаленными устройствами обработки данных, которые связаны через сеть передачи данных. В распределенной компьютерной среде программные модули могут быть размещены как в локальных, так и в удаленных запоминающих устройствах.
На Фиг.1 показана архитектура компьютера для компьютера 2, используемого в различных вариантах выполнения изобретения. Архитектура компьютера, которая показана на Фиг.1, иллюстрирует обычный настольный компьютер или переносной компьютер, включающий в себя центральное процессорное устройство 5 ("ЦПУ"), системную память 7, включающую в себя оперативное запоминающее устройство 9 ("ОЗУ") и постоянное запоминающее устройство ("ПЗУ") 11, а также системную шину 12, которая соединяет память с ЦПУ 5. Базовая система ввода-вывода, содержащая основные процедуры, которые помогают передавать информацию между элементами компьютера, например, во время включения, содержится в ПЗУ 11. Компьютер 2 дополнительно включает в себя запоминающее устройство 14 большой емкости, предназначенное для хранения в нем операционной системы 16, прикладных программ и других программных модулей, которые будут более подробно описаны ниже.
Запоминающее устройство 14 большой емкости соединено с ЦПУ 5 через контроллер запоминающего устройства большой емкости (не показан), соединенный с шиной 12. Запоминающее устройство 14 большой емкости и связанные с ним машиночитаемые носители информации обеспечивают энергонезависимое хранилище для компьютера 2. Хотя описание машиночитаемого носителя информации относится к запоминающему устройству большой емкости, такому, как накопитель на жестких дисках или дисковод CD-ROM, для специалиста в данной области техники будет понятно, что машиночитаемые носители информации могут представлять собой любые доступные носители информации, к которым может осуществлять доступ компьютер 2.
В качестве примера, а не для ограничения, машиночитаемый носитель информации может содержать компьютерные накопители информации и среды передачи данных. Компьютерные накопители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, выполненные с использованием любого способа или технологии хранения информации, например, в виде машиночитаемых инструкций, структур данных, программных модулей или других данных. Компьютерные накопители информации включают в себя, но не в ограничительном смысле, ОЗУ, ПЗУ, электрически программируемое ПЗУ (EPROM), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память или другие запоминающие устройства, выполненные по твердотельной технологии, CD-ROM, цифровые универсальные диски ("DVD") или другие оптические накопители, магнитные кассеты, магнитную ленту, накопители на магнитных дисках или другие магнитные устройства хранения информации, или любой другой носитель, который можно использовать для хранения требуемой информации, и доступ к которому можно осуществлять с помощью компьютера 2.
В соответствии с различными вариантами выполнения изобретения, компьютер 2 может работать в сетевой среде, с использованием логического соединения с удаленными компьютерами через сеть 18, такую как Интернет. Компьютер 2 может быть подключен к сети 18 через блок 20 сетевого интерфейса, соединенный с шиной 12. Следует понимать, что блок 20 сетевого интерфейса 20 также можно использовать для соединения с другими типами сетей и удаленными компьютерными системами. Компьютер 2 также может включать в себя контроллер 22 ввода-вывода, предназначенный для приема и обработки входных данных из множества других устройств, включая клавиатуру, мышь или электронное пишущее перо (не показаны на Фиг.1). Аналогично, контроллер 22 ввода-вывода может обеспечить вывод данных на экран дисплея, принтер или выходное устройство другого типа.
Как вкратце указано выше, ряд программных модулей и файлов данных может быть сохранен в устройстве 14 накопителя большой емкости и в ОЗУ 9 компьютера 2, включая операционную систему 16, которая обеспечивает возможность управления работой подключенного к сети персонального компьютера, такую как операционная система WINDOWS XP производства компании MICROSOFT CORPORATION, г.Редмонд, штат Вашингтон. В устройстве 14 накопителя большой емкости и в ОЗУ 9 также могут быть сохранены один или больше программных модулей. В частности, в устройстве 14 накопителя большой емкости и в ОЗУ 9 может быть сохранена главная прикладная программа 26. Главная прикладная программа 26 содержит программу любого типа, для которой требуется обеспечить предварительный просмотр документа 32 для пользователя. В соответствии, с вариантами выполнения изобретения, главная прикладная программа 26 содержит прикладную программу - персональный информационный менеджер OUTLOOK производства компании MICROSOFT CORPORATION. С использованием различных вариантов выполнения изобретения, предварительный просмотр может быть сгенерирован и может отображаться для документов, прикрепленных к сообщениям электронной почты. Следует, однако, понимать, что главная прикладная программа 26 может содержать прикладную программу - текстовый редактор, прикладную программу работы с электронными таблицами, прикладную программу подготовки презентаций, операционную систему 16 или программы любого другого типа. В этих программах могут использоваться описанные здесь средства, например, предназначенные для обеспечения предварительного просмотра документа в виде открытого диалогового окна файла, в пределах оболочки операционной системы, или в любом другом месте.
В устройстве 14 накопителя большой емкости и в ОЗУ 9 также может содержаться программа 28 обработчика предварительного просмотра. Обработчик 28 предварительного просмотра представляет собой средство, обеспечивающее предварительный просмотр документов. Как более подробно будет описано ниже, обработчик 28 предварительного просмотра обеспечивает интерфейс, который прикладные программы, такие как главная прикладная программа 26, могут вызывать для генерирования предварительного просмотра документа. Обеспечение предварительного просмотра документа отделено от главной прикладной программы 26 интерфейсом, обеспечиваемым обработчиком 28 предварительного просмотра.
В соответствии с вариантами выполнения изобретения, обработчик 28 предварительного просмотра может использовать одну или больше программ 30 предварительного просмотра для генерирования фактического предварительного просмотра документа 32. Средства предварительного просмотра могут быть зарегистрированы в обработчике предварительного просмотра 28 главной прикладной программе 26 или в операционной системе 16 как средство предварительного просмотра для определенного типа документа. Информация, относящаяся к зарегистрированным средствам предварительного просмотра, может поддерживаться обработчиком 28 предварительного просмотра, главной прикладной программой 26 или операционной системой 16, в отношении идентификационных данных и расположения зарегистрированных средств предварительного просмотра. Операционная система 16 может сохранять эту информацию в реестре 24. Следует понимать, что главная прикладная программа 26 сама может быть зарегистрирована как средство предварительного просмотра для различных типов документов. Дополнительное подробное описание, относящееся к работе главной прикладной программы 26, обработчика 28 предварительного просмотра и средства 30 предварительного просмотра будет представлено ниже со ссылкой на Фиг.2-5.
Со ссылкой на Фиг.2 будут представлены дополнительные детали различных программных компонентов, используемых в вариантах выполнения изобретения. Как показано на Фиг.2, главная прикладная программа 26 связывается с обработчиком 28 предварительного просмотра с помощью интерфейса 42 обработчика предварительного просмотра, обеспечиваемого обработчиком предварительного просмотра. В свою очередь, обработчик 28 предварительного просмотра может осуществлять связь с главной прикладной программой через главный интерфейс 40 предварительного просмотра, воплощенный главной прикладной программой. Обработчик 28 предварительного просмотра также может осуществлять связь со средствами 30A-30D предварительного просмотра с использованием интерфейса 50 предварительного просмотра. Следует понимать, что главная прикладная программа 26 может реализовывать средство 30D предварительного просмотра и может осуществлять связь с обработчиком 28 предварительного просмотра, аналогично тому, как описано здесь со ссылкой на средство 30A-30C предварительного просмотра. Следует также понимать, что обработчик 28 предварительного просмотра может извлекать значения из реестра 24 для идентификации соответствующего средства предварительного просмотра и места его расположения.
Как кратко описано выше, каждое из средств 30A-30C предварительного просмотра работает для генерирования предварительного просмотра для одного или нескольких типов документов. Документы 32A-32C обычно хранятся в устройстве 14 накопителя большой емкости в месте, в котором они доступны для средств 30A-30C предварительного просмотра. Информация об этом месте передают в средства 30A-30C предварительного просмотра по запросу на загрузку, поступающему из обработчика 28 предварительного просмотра. Этот процесс более подробно будет описан ниже.
Средства 30A-30C предварительного просмотра могут непосредственно осуществлять связь с главной прикладной программой 26 с использованием одного или больше необязательных интерфейсов. В частности, интерфейс 44 хода выполнения можно использовать для обеспечения индикатора хода выполнения главной прикладной программе 26. Индикатор хода выполнения может затем отображаться для пользователя, для обеспечения, например, графической индикации хода выполнения на дисплее предварительного просмотра. Сигнальный интерфейс 46 может использоваться средствами 30A-30C предварительного просмотра для получения разрешения из главной прикладной программы 26 на загрузку поддерживающих файлов, связанных с документом. Например, если просматривают документ, который представляет собой документ на языке разметки гипертекста ("HTML"), для обеспечения предварительного просмотра может потребоваться загрузка графики и других указанных ссылкой файлов. Перед загрузкой указанных ссылкой файлов, средство предварительного просмотра может запрашивать санкционирование (авторизацию) у главной прикладной программы 26 на выполнение этого через сигнальный интерфейс 46. Интерфейс 48 IUnknown может использоваться средствами 30A-30C предварительного просмотра для получения интерфейсов для выполнения различных функций, таких как загрузка поддерживающих файлов, необходимых для генерирования предварительного просмотра документа. Как известно для специалистов в данной области техники, интерфейс 48 IUnknown позволяет клиенту получать указатели на другие интерфейсы данного объекта.
Для обеспечения предварительного просмотра главная прикладная программа 26 передает описатель окна 52 в обработчик 28 предварительного просмотра. Описатель предварительного просмотра затем создает дочернее окно (или подокно) внутри окна, созданного главной прикладной программой. Описатель дочернего окна затем передают в соответствующее средство 30A-30C предварительного просмотра, когда средство предварительного просмотра было идентифицировано и был создан его экземпляр. Для обеспечения предварительного просмотра 56 в окне, средство предварительного просмотра создает подокно 54 внутри окна 52. Поскольку входные команды пользователя, направленные на просмотр, будут приниматься средством предварительного просмотра, средство предварительного просмотра должно работать так, что оно будет обрабатывать определенные типы входных команд и передавать другие типы входных команд непосредственно в обработчик 28 предварительного просмотра и затем в главную прикладную программу 26. Таким образом, входные команды, принимаемые средством предварительного просмотра, которые в действительности предназначены для главной прикладной программы 26, могут быть обработаны главной прикладной программой 26.
Со ссылкой на Фиг.2, будут описаны дополнительные детали, относящиеся к интерфейсу 42 обработчика предварительного просмотра, главному интерфейсу 40 предварительного просмотра и к интерфейсу 50, предварительного просмотра. Интерфейс 42 обработчика предварительного просмотра обеспечивает метод "инициализации", который вызывают после того, как главная прикладная программа 26 создает экземпляр обработчика 28 предварительного просмотра. Метод инициализации позволяет обработчику 28 предварительного просмотра 28 инициализироваться в окне 52. Параметры, переданные в метод инициализации, представляют собой экземпляр главной прикладной программы 26, указатель на интерфейс 40 главного средства предварительного просмотра и один или больше флагов, которые можно использовать для определения операции обработчика 28 предварительного просмотра. Метод установки окна также может быть обеспечен в интерфейсе 42, который принимает описатель окна 52, в котором должен быть обеспечен предварительный просмотр.
Интерфейс 42 обработчика предварительного просмотра также обеспечивает метод "загрузки". Метод загрузки вызывается главной прикладной программой 26, когда принимают запрос на генерирование предварительного просмотра документа, например, когда пользователь выбирает файл или набор файлов, которые он хочет предварительно просмотреть. При вызове этого метода обработчик 28 предварительного просмотра сохраняет имя или имена файлов для предварительного просмотра и вызывает фоновый поток для предварительного просмотра файла. Фоновый поток затем гарантирует, что действительно есть файл для предварительного просмотра, получает расширение для этого файла и делает попытку определить местонахождение средств 30A-30C предварительного просмотра в соответствии с расширением. Если местонахождение средства предварительного просмотра обнаружено, его используют для предварительного просмотра файла. Метод загрузки принимает полный путь к файлу для предварительного просмотра в качестве параметра. Дополнительные детали, относящиеся к работе метода загрузки, будут представлены ниже.
Интерфейс 42 обработчика предварительного просмотра также включает в себя метод "показа". Метод показа вызывается главной прикладной программой 26 после того, как файл будет успешно загружен в средство предварительного просмотра посредством вызова метода загрузки. Если главной прикладной программе 26 требуется воспроизведение файла в виде предварительного просмотра, она вызывает метод показа. Интерфейс 42 обработчика предварительного просмотра также включает в себя метод "показа сообщения об ошибке". Метод показа сообщения об ошибке вызывают, если метод загрузки или показа возвращает код ошибки, и главной прикладной программе 26 требуется, чтобы обработчик 28 предварительного просмотра отображал сообщение об ошибке для этого кода.
Метод показа сообщения об ошибке принимает в качестве параметров код ошибки и имя файла, который не мог быть загружен или показан.
Интерфейс 42 обработчика предварительного просмотра также включает в себя метод "окно изменено". Этот метод вызывают, когда окно 52, которое было передано методу установки окна, изменяется некоторым образом. Например, если изменяется размер окна 52, главная прикладная программа 26 может вызывать этот метод для информирования обработчика 28 предварительного просмотра об этом изменении. Обработчик 28 предварительного просмотра 28 может затем вызвать соответствующее средство предварительного просмотра для обновления размера подокна 52 и предварительного просмотра 56. Интерфейс 42 обработчика предварительного просмотра также включает в себя метод "отмены инициализации", который может быть вызван, когда больше не остается дополнительных файлов для предварительного просмотра. Метод отмены инициализации выполняет отмену инициализации обработчика 28 предварительного просмотра.
Главный интерфейс 40 предварительного просмотра представляет собой необязательный интерфейс обратного вызова, который реализуется главной прикладной программой 26 для обеспечения обработчику 28 предварительного просмотра возможности использования ресурсов, которые могут быть доступны для главной прикладной программы 26. Например, если главная прикладная программа 26 уже загрузила средство предварительного просмотра для конкретного типа документа, для главной прикладной программы 26 может быть полезно передать этот интерфейс в загруженное средство предварительного просмотра, вместо попытки обработчиком 28 предварительного просмотра загрузить собственное средство предварительного просмотра.
Главный интерфейс 40 предварительного просмотра обеспечивает метод "получить средство предварительного просмотра". Обработчик 28 предварительного просмотра может вызывать этот метод, когда обработчик 28 предварительного просмотра пытается определить местонахождение средства предварительного просмотра для файла. С использованием метода "получить средство предварительного просмотра", обработчик 28 предварительного просмотра может запрашивать главную прикладную программу 26 в отношении идентификационных данных средства предварительного просмотра для этого типа файлов. В качестве входных данных метод "получить средство предварительного просмотра" принимает расширение файла, предназначенного для предварительного просмотра, и обеспечивает выходной параметр, показывающий идентификационные данные средства предварительного просмотра для типа файла или NULL. Этот метод может быть полезным, например, когда главная прикладная программа 26 уже была загружена в средство предварительного просмотра или когда главная прикладная программа 26 сама обеспечивает средство 30D предварительного просмотра.
Если метод "получить средство предварительного просмотра" не возвращает средство предварительного просмотра, обработчик 28 предварительного просмотра может использовать метод "получить идентификатор (ID) класса средства предварительного просмотра", обеспечиваемый главным интерфейсом 40 предварительного просмотра. С использованием метода "получить ID класса средства предварительного просмотра", главная прикладная программа 26 может передавать в обработчик 28 предварительного просмотра ID класса для любых средств предварительного просмотра, которые ей нужно использовать для конкретного файла с заданным расширением. Например, главная прикладная программа 26 может задать, что конкретное средство предварительного просмотра должно использоваться для конкретного файла на расширяемом языке разметки ("XML"). Метод "получить ID класса средства предварительного просмотра" принимает в качестве входных данных расширение файла, предназначенного для предварительного просмотра, и обеспечивает выходной параметр, показывающий ID класса средства предварительного просмотра для типа файла или NULL.
Главный интерфейс 40 предварительного просмотра также обеспечивает метод "получить интерфейс". Когда обработчик 28 предварительного просмотра получает инструкцию на загрузку файла, он пытается получить указатели на сигнальный интерфейс 46, интерфейс 44 хода выполнения и интерфейс 48 IUnknown для передачи их в обработчик для использования во время загрузки и представления. Метод "получить интерфейс" используется с этой целью. Метод "получить интерфейс" принимает в качестве параметров идентификационные данные интерфейса, который запрашивается, и возвращает в качестве выходного параметра указатель на запрашиваемый интерфейс, если он возвращается.
Главный интерфейс 40 предварительного просмотра также обеспечивает метод "окончания загрузки". Когда средство предварительного просмотра заканчивает загрузку файла, этот метод может быть вызван с тем, чтобы оповестить главную прикладную программу 26 о том, что может быть выполнен следующий этап. Например, в ответ на прием вызова метода окончания загрузки, главная прикладная программа 26 может вызывать метод представления в интерфейсе 42 обработчика предварительного просмотра. В качестве альтернативы, если документ не может быть загружен, может быть выбран метод окончания загрузки с сообщением об ошибке. В этом случае главная прикладная программа 26 может вызывать метод "показать сообщение об ошибке" в интерфейсе 42 обработчика предварительного просмотра.
Интерфейс 50 средства предварительного просмотра представляет собой базовый интерфейс для средств 30A-30D предварительного просмотра для реализации. В результате реализации этого интерфейса, может быть вызвано средство предварительного просмотра для загрузки файла, передачи этого файла в подокно, обеспечения навигации внутри документа, если это требуется, и выгрузки файла, когда предварительный просмотр закончен. Средства предварительного просмотра могут быть вызваны в фоновом потоке и также должны обеспечивать как можно более быструю загрузку и воспроизведение, поскольку пользователь может ожидать представление предварительного просмотра.
Интерфейс 50 средства предварительного просмотра предоставляет метод "загрузки", который вызывают для инициализации средства предварительного просмотра для конкретного файла. Метод загрузки принимает в качестве параметров путь к документу, предназначенному для просмотра, и, в необязательном порядке, указатели на сигнальный интерфейс 46, интерфейс 44 хода выполнения и интерфейс 48 IUnknown. Эти интерфейсы можно использовать так, как описано выше.
При загрузке документа в ответ на вызов метода загрузки, средство предварительного просмотра не должно вызывать какой-либо интерфейс пользователя, такой как программные диалоги и т.д. Документ не должен быть заблокирован для записи, и средство предварительного просмотра не должно каким-либо образом изменять или обновлять документ. Отказ средства предварительного просмотра должен также происходить без лишних звуковых сообщений, если документ защищен паролем. Средство предварительного просмотра также не должно выполнять какие-либо макрокоманды, содержащиеся в документе. Средство предварительного просмотра также должно быть разработано так, чтобы метод загрузки можно было вызывать один раз, и метод "показа" (описан ниже) можно было вызывать много раз, возможно в различных окнах. Метод загрузки должен выполнять любую затратную по времени работу, используемую при подготовке файла для считывания, так что метод "показа" должен выполняться как можно быстрее. Если пользователь пытается отменить предварительный просмотр, метод загрузки должен прекращать загрузку файла и как можно быстрее выполнить возврат.
Как кратко описано выше, интерфейс 50 средства предварительного просмотра также предоставляет метод "показа". Этот метод вызывают для обеспечения возможности визуального представления средством предварительного просмотра документа, переданного в метод загрузки, в заданном окне. Этот метод представляет собой метод, отдельный от метода загрузки, и позволяет пользователю загружать файл без необходимости также представления файла в окне. Метод показа принимает в качестве параметра описатель для окна, в котором должен быть представлен предварительный просмотр.
Интерфейс 50 предварительного просмотра также предоставляет метод "окно изменено". Этот метод вызывают для того, чтобы сообщить средству предварительного просмотра, что окно, используемое в настоящее время, определенным образом изменилось. Этот метод обычно вызывают в ответ на вызов метода изменения окна интерфейса 42 обработчика предварительного просмотра. Интерфейс 50 средства предварительного просмотра также предоставляет метод "выгрузки". Этот метод вызывают с тем, чтобы сообщить средству предварительного просмотра, что оно должно выгрузить файл, который был загружен через метод загрузки. Дополнительные подробности, относящиеся к использованию и работе различных методов, обеспечиваемых интерфейсом 42 обработчика предварительного просмотра, главным интерфейсом предварительного просмотра и интерфейсом 50 средства предварительного просмотра будут более подробно описаны ниже со ссылкой на Фиг.3-5.
В соответствии с вариантами выполнения изобретения, обработчик 28 предварительного просмотра также может поддерживать интерфейс 51 IService Provider или интерфейс 53 IOle CommandTarget. Интерфейс 51 представляет собой предварительно существующий интерфейс, который позволяет компоненту предоставлять не присущие ему функциональные возможности. Благодаря использованию интерфейса 51, главная прикладная программа 26 может выяснять у текущего средства предварительного просмотра, поддерживает ли оно функциональные возможности определенного типа. Интерфейс 53 представляет собой другой предварительно существующий интерфейс, который позволяет вызывающей стороне (главной прикладной программе 26) выдавать команды в клиент (средство предварительного просмотра). Обработчик 28 предварительного просмотра реализует этот интерфейс как переход к текущему средству предварительного просмотра.
Со ссылкой на Фиг.3 будет описана иллюстративная процедура 300, представляющая процесс, обеспечивающий предварительный просмотр документа. При чтении описания представленных здесь процедур следует понимать, что логические операции различных вариантов выполнения настоящего изобретения реализованы (1) как последовательность действий или программных модулей, выполняющихся в вычислительной системе, и/или (2) как взаимно соединенные логические схемы или схемные модули машины, находящейся в вычислительной системе. Вариант реализации представляет собой предмет выбора, в зависимости от требуемых рабочих характеристик компьютерной системы, воплощающей изобретение. В соответствии с этим, логические операции, представленные на Фиг.3-5 и составляющие описанные здесь варианты выполнения настоящего изобретения, называются по-разному как операции, структурные устройства, действия или модули. Для специалистов в данной области техники будет понятно, что эти операции, структурные устройства, действия и модули могут быть реализованы в виде программных средств, в виде аппаратных средств, в виде цифровых логических устройств специального назначения и с использованием любой их комбинации, без отхода от объема и сущности настоящего изобретения, которые описаны в представленной ниже формуле изобретения.
Процедура 300 начинается операцией 302, в которой определяют, был ли принят запрос на генерирование предварительного просмотра одного или больше документов. Такой запрос может быть выполнен, например, пользователем, выбирающим сообщение электронной почты, к которому прикреплен один или больше документов. В качестве альтернативы, такой запрос может быть выполнен программным путем с использованием операционной системы или программы другого типа. Если запрос на предварительный просмотр не был принят, процедура 300 возвращается обратно к операции 302, где еще раз выполняется такое определение. Если запрос был принят, процедура 300 переходит от операции 302 к операции 304.
При выполнении операции 304 главная прикладная программа 26 создает экземпляр обработчика 28 предварительного просмотра. Процедура 300 затем переходит к операции 306, где главная прикладная программа 26 вызывает метод инициализации интерфейса 42 обработчика предварительного просмотра. В ответ на прием вызова метода 26 инициализации, обработчик 28 предварительного просмотра инициализирует себя, как описано выше. Метод установки окна также может быть вызван с описателем этого окна, в котором должен быть сгенерирован предварительный просмотр.
После операции 306 процедура 300 переходит к операции 308, в ходе которой главная прикладная программа 26 вызывает метод загрузки интерфейса 42 обработчика предварительного просмотра. В ответ на прием вызова метода загрузки обработчик 28 предварительного просмотра пытается идентифицировать средство предварительного просмотра для конкретного типа документа, предназначенного для просмотра, для загрузки средства предварительного просмотра и для выдачи средству предварительного просмотра инструкции на загрузку документа. Этот процесс происходит во время операции 310. Ниже со ссылкой на Фиг.4 будет описан пример процедуры 400 поиска местонахождения средства предварительного просмотра и загрузки документа.
После выполнения операции 310 процедура 300 переходит к выполнению операции 312, во время которой выполняется определение того, было ли идентифицировано средство предварительного просмотра и удалось ли ему загрузить документ. Если средство предварительного просмотра не смогло загрузить документ, процедура 300 ответвляется для выполнения операции 316, в ходе которой в главную прикладную программу 26 возвращается сообщение об ошибке по вызову метода окончания загрузки в главном интерфейсе 40 предварительного просмотра с сообщением об ошибке. В ответ на такую ошибку, главная прикладная программа 26 может вызвать метод представления сообщения об ошибке через интерфейс 42 обработчика предварительного просмотра. После операции 316 процедура 300 переходит к операции 318, на которой она заканчивается.
Если в ходе операции 312 будет определено, что средство предварительного просмотра смогло загрузить документ, процедура 300 переходит к операции 314, в ходе которой может быть вызван метод "загрузка выполнена" главного интерфейса 40 предварительного просмотра, с сообщением об успешной загрузке. В ответ на прием такого сообщения, главная прикладная программа 26 может вызвать метод показа интерфейса 42 обработчика предварительного просмотра. В ответ на это обработчик 28 предварительного просмотра может вызвать метод показа интерфейса 50 средства предварительно просмотра для обеспечения отображения предварительного просмотра средством предварительного просмотра в подокне 54. Затем, когда предварительный просмотр больше не требуется, различные методы отмены инициализации могут быть вызваны для отмены инициализации средства предварительного просмотра и обработчика 28 предварительного просмотра. Представленная для примера процедура 500 описана ниже со ссылкой на Фиг.5 для отмены инициализации этих компонентов. После операции 314 процедура 300 переходит к операции 318, где она заканчивается.
Рассмотрим теперь Фиг.4, на которой представлен пример процедуры 400 для идентификации и загрузки соответствующего средства предварительного просмотра документа. Процедура 400 начинается при выполнении операции 402, в ходе которой создается фоновый поток для осуществления связи со средством предварительного просмотра. Фоновый поток используется так, что новый фоновый поток может быть создан и может использоваться в случае, когда средство предварительного просмотра перестает отвечать на запросы. Это также позволяет главной прикладной программе 26 отвечать на запросы, в то время как обработчик 28 предварительного просмотра ожидает, когда средство предварительного просмотра загрузит и считает файл. Это позволяет обработчику 28 предварительного просмотра обрабатывать случай, когда пользователь принимает решение, что он не желает просматривать файл, который был запрошен для предварительного просмотра. Например, если пользователь выбирает файл электронной таблицы и, пока средство предварительного просмотра загружает этот файл, пользователь принимает решение, что он в действительности хочет просмотреть изображение, он может выбрать изображение в главной прикладной программе 26. При этом обработчик 28 предварительного просмотра может быстро определить, находится ли существующий фоновый поток в состоянии, когда он может загрузить средство предварительного просмотра для изображения. Если это невозможно, обработчик 28 предварительного просмотра может загрузить фоновый поток для средства предварительного просмотра изображения и загрузить предварительный просмотр изображения, без ожидания окончания загрузки файла электронной таблицы.
После операции 402 процедура 400 переходит к операции 404, в ходе которой определяется, загружено ли уже требуемое средство предварительного просмотра. Для улучшения рабочих характеристик обработчик 28 предварительного просмотра может оставлять средства предварительного просмотра в памяти на некоторый период времени после того, как они были востребованы. Таким образом, обеспечивается эффективное кэширование средства предварительного просмотра, при этом время загрузки может быть уменьшено при последующем запросе средства предварительного просмотра. Во время операции 406, если средство предварительного просмотра уже было загружено, процедура 400 переходит к операции 408, где загруженное в настоящее время средство предварительного просмотра обозначается как средство предварительного просмотра для просматриваемого документа. Если требуемое средство предварительного просмотра не было загружено, процедура 400 ответвляется от операции 406 и переходит к операции 422.
В ходе операции 422 выполняется поиск в реестре 24 для определения того, зарегистрировало ли себя средство предварительного просмотра как средство предварительного просмотра конкретного типа файла документа. Если средство предварительного просмотра идентифицировано в реестре, процедура 400 ответвляется для выполнения операции 426, где идентифицированное в реестре средство предварительного просмотра обозначается как средство предварительного просмотра документа. Если средство предварительного просмотра не найдено в реестре, процедура 400 переходит к операции 410.
Во время операции 410 обработчик 28 предварительного просмотра вызывает метод "получить средство предварительного просмотра" главного интерфейса 40 предварительного просмотра. Как описано выше, метод "получить средство предварительного просмотра" позволяет обработчику 28 предварительного просмотра запрашивать идентификационные данные средства предварительного просмотра из главной прикладной программы 26. Если во время операции 412 будет определено, что главная программа идентифицировала средство предварительного просмотра в ответ на вызов метода "получить средство предварительного просмотра", процедура 400 ответвляется для выполнения операции 414, где идентифицированное средство предварительного просмотра обозначается как средство просмотра для документа. Если главная прикладная программа 26 не обозначает средство предварительного просмотра, процедура 400 переходит к операции 416.
Во время операции 416 выполняется вызов метода получения ID класса средства предварительного просмотра главного интерфейса 40 предварительного просмотра. Если главная прикладная программа 26 в ответ на вызов возвращает ID класса средства предварительного просмотра, метод 400 ответвляется от операции 418 и переходит к операции 414, во время которой средство предварительного просмотра, идентифицированное по ID класса, обозначается, как средство предварительного просмотра для текущего документа. В противном случае, процедура 400 после операции 418 переходит к операции 428, где возвращается сообщение об ошибке.
После операций 408, 414, 420 и 426, процедура 400 переходит к операции 430. Во время операции 430 обозначенное средство предварительного просмотра загружают как объект, находящийся вне процесса, для фонового потока. Процедура 400 затем переходит к операции 432, где делается попытка загрузить документ с помощью средства предварительного просмотра и построить предварительный просмотр. Процедура 400 затем переходит к операции 434, на которой определяют, был ли документ успешно загружен. Если документ не был успешно загружен, процедура 400 ответвляется от операции 434 и переходит к операции 438, во время которой возвращается сообщение об ошибке. Если документ был загружен успешно, процедура 400 переходит к операции 436, во время которой возвращается сообщение об успешном выполнении. После операций 436 и 438 процедура 400 переходит к операции 440, на которой выполняется возврат.
Рассмотрим теперь Фиг.5, на которой показан пример процедуры 500 выгрузки средства предварительного просмотра и обработчика 28 предварительного просмотра. Процедура 500 начинается с операции 502, во время которой обработчик 28 предварительного просмотра вызывает метод выгрузки средства предварительного просмотра. В ответ на прием такого вызова, средство предварительного просмотра выгружает документ и самостоятельно отменяет инициализацию. Процедура 500 затем переходит к операции 504, где выполняется вызов метода отмены инициализации в интерфейсе 28 обработчика предварительного просмотра. Этот вызов приводит к тому, что обработчик предварительного просмотра самостоятельно отменяет инициализацию. После операции 504 процедура 500 переходит к операции 506, где она заканчивается.
На основе приведенного выше описания следует понимать, что различные варианты выполнения изобретения включают способ, систему, устройство и машиночитаемый носитель информации, обеспечивающие предварительный просмотр документа. Приведенное выше описание, примеры и данные составляют полное описание изготовления и использования состава изобретения. Поскольку множество вариантов выполнения изобретения могут быть выполнены без отхода от объема и сущности изобретения, изобретение основано на приложенной ниже формуле изобретения.