COM/DCOM/COM+ (original) (raw)

Основы

Введение в COM

Автор: Том Армстронг
Источник: "ActiveX-Создание Web-приложений", глава 6
Материал предоставил: Евгений Щербатов

Аннотация: В этой главе, позаимствованной из книги "ActiveX-Создание Web-приложений" Тома Армстронга, рассматриваются основные понятия модели COM, такие как интерфейс IUnknown, GUID, фабрики классов и т. д. Кроме того, автор приводит примеры реализации COM-клиентов и COM-серверов с использованием языка C++, Visual Basic и библиотеки ATL.

Ключевые слова:

COMponents

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

Ключевые слова:

18.08.2005 Dll vs COM

Аннотация: Здравствуйте, Ellin, Вы писали:

E>Кто что думает по поводу прав ли я? По моему dll в подавляющем большенстве случаев хуже COM. И нужно стараться всегда использовать COM. А?


Все зависит от того, что вы понимаете под COM и как вы собираетесь его использовать. Я для себя разделяю на две части: ид...

Ключевые слова:

COM vs. CORBA

COM vs.CORBA

Аннотация: "В споре технологий точку может поставить только время. Технологии-победительницы живут и развиваются, проигравшие, как легко догадаться, вымирают...."

Ключевые слова:

CORBA

Аннотация: "Основным способом, используемым для создания CORBA-приложений, является так называемый «статический» подход – основой является набор IDL-объявлений, на базе которого компилятор с языка IDL генерирует все необходимое для взаимодействия программы и CORBA..."

Ключевые слова:

COM

Аннотация: Эта статья входит в цикл "COM vs. CORBA" и знакомит читателя с основами COM, начиная с интерфейса IUnknown и заканчивая маршалингом, DCOM и COM+.

Ключевые слова:

Тестирование CORBA и COM

Аннотация: В таблице 1 приведены результаты тестов, целью которых является сравнение скорости вызовов в COM и CORBA. Для этого были созданы объекты, содержащие пять методов.

Ключевые слова:

Код к статье COM vs. CORBA

Аннотация: Для всех примеров CORBA нужно иметь правильно установленный VisiBroker. Для запуска примеров необходимо запустить VisiBroker SmartAgent, а затем - сервер CORBA.

Ключевые слова:

Исследования

Known IUnknown

Аннотация: В статье рассматриваются способы перебора интерфейсов неизвестного объекта и возможность их восстановления из файлов с отладочной информацией (pdb).

Ключевые слова:

13.10.2002 VARIANT и SafeArray

Аннотация: В Internet-конференциях часто задаются вопросы, связанные с использованием таких типов, как VARIANT, SafeArray, BSTR и им подобных. Эти типы и API для работы с ними появились еще в 1995 году. Microsoft уже заявляет об отказе от развития COM, а количество вопросов не уменьшается.

Ключевые слова: VARIANT,SafeArray

COM - потоки и контексты

Аннотация: Код к статье.

Ключевые слова:

14.08.2004 Управление контекстами в COM

Аннотация: Статья описывает принципы работы с контекстами объектов в COM и СOM+.

Ключевые слова:

22.02.2001 Понимание подразделений COM

Аннотация: В этой статье подробно рассматриваются подразделения (apartments) в модели COM. Автор описывает различные виды подразделений, показывает, каким образом подразделения назначаются потокам и объектам, а также даёт ряд полезных советов, которые позволят вам избежать ошибок при работе с подразделениями.

Ключевые слова:

Секреты маршалинга

Аннотация: В прошлом номере нашего журнала были опубликованы два обзора – по CORBA и COM. Их целью было дать представление о конкурирующей технологии программистам, уже владеющим одной из них. Но эти обзоры можно использовать и как систематизирующий материал, позволяющий ориентироваться в соответствующих техн...

Ключевые слова:

26.03.2003 Моникеры.

Аннотация: Моникером называют СОМ-объект, реализующий интерфейс IMoniker и позволяющий клиенту получить указатель на объект, идентифицируемый этим моникером, через вызов метода IMoniker::BindToObject. По имени этого метода процесс получения объекта от моникера называют связыванием моникера или активизацией объекта.

Ключевые слова: moniker,BindToObject,BindToStorage,Reduce,ComposeWith,Enum,IsEqual ,Hash,IsRunning,GetTimeOfLastChange,Inverse,CommonPrefixWith,GetDisplayName,ParseDisplayName,RelativePathTo,IsSystemMoniker

18.06.2002 Что такое моникер

Аннотация: Здравствуйте Финченко Юрий, Вы писали:

ФЮ>Вопрос номер два. А то у меня понятия стали путаться.

ФЮ>Что такое моникер?

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

Ключевые слова:

01.01.2004 Получение информации о COM-интерфейсах

Аннотация: Для получения информации о COM объектах существуют специальные утилиты (например, входящий в состав Студии "OLE/COM Object Viewer"), которые и расскажут, и покажут, и IDL напишут. Но иногда необходимо получить эти данные "на лету", во время выполнения программы. Механизмам получения информации об интерфейсах и посвящена эта статья.

Ключевые слова: typeinfo

28.01.2002 Защита в DCOM/COM+

Аннотация: Исполняемые файлы для примеров ComSec и ComSrvEvents (ComSecModules.zip - 109 KB) Исходные тексты для примера ComSec - 32 KB Исходные тексты для примера ComSrvEvents - 34 KB

Ключевые слова:

17.07.2001 Работа СОМ-сервера в режимах Single/Multiple Instances

Аннотация: В статье рассматриваются вопросы, связанные с использованием работы серверов в режиме Single/Multiple Instances, а так же способы, которыми решается эта задача в MFC и ATL.

Ключевые слова:

Система поддержки событий COM+

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

Ключевые слова:

DCOM и Microsoft Transaction Server

Аннотация: "Настоящая статья основывается на материалах докладов, сделанных автором на ежегодной конференции разработчиков DevCon. Учитывая повышенный интерес, проявленный аудиторией к данной тематике..., было бы целесообразно, на мой взгляд, немного более подробно остановиться на назначении и функциональных возможностях Microsoft Transaction Server..."

Ключевые слова:

Queued-компоненты Windows 2000

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

Ключевые слова:

Асинхронные вызовы COM-компонентов в Windows 2000

Аннотация: "В Windows 2000 реализована первая версия COM, поддерживающая асинхронные вызовы методов. Это позволяет клиентам производить неблокирующие вызовы COM-объектов, а объектам - обрабатывать входящие, не блокируя очереди..."

Ключевые слова:

15.03.2003 Кто сегодня самый удалённый :o)

Аннотация: ...сегодня мы рассмотрим и сравним две родственные технологии для построения распределённых систем – DCOM и её преемницу .NET Remoting. В первую очередь нас будут интересовать скорость вызова методов и время создания (соединения) удалённого объекта.

Ключевые слова: Remoting test,TCP test,SOAP test,DCOM test

30.11.2003 Перехват методов интерфейса IUnknown

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

Ключевые слова: QueryInterface перехват, IUnknown перехват

Перехват методов COM интерфейсов

25.09.2004 Перехват методов COM интерфейсов

Аннотация: В статье продолжается обсуждение темы перехвата вызовов методов COM-интерфейсов. Рассматривается использование API-функций, позволяющих упростить эту задачу.

Ключевые слова: COM, Interface

11.07.2005 Перехват методов COM интерфейсов – 2

Аннотация: Эта статья является продолжением статьи “Перехват методов COM интерфейсов”, опубликованной в RSDN Magazine #1’2004. В предыдущей части статьи описан перехват вызовов automation-совместимых интерфейсов. В этой части описывается решение, позволяющее перехватывать и не-automation-совместимые интерфейсы. Требуется знание COM и C++.

Ключевые слова: COM, перехват методов

Практика

24.03.2001 MS Office в MFC приложениях

Аннотация: Однажды я занимался проектом, главной особенностью которого было наличие большого количества типовых форм ввода и вывода. Что-то типа делопроизводства. Документы должны были заполняться данными из БД или другими данными, которые может предоставить программа. При этом было бы крайне желательно, чтобы шаблон документа мог разобраться с этими данными самостоятельно. Оказалось, что всем этим требованиям вполне удовлетворяет MS Office. В этой статье я попытаюсь это продемонстрировать.

Ключевые слова:

28.10.2004 Runtime определение аппартмента из кода

Аннотация: можно в коде MTS/COM+-компонента найти, в каком апартменте он создан, причем для STA – в каком именно STA – host, main или ином, и как-то идентифицировать апартмент

Ключевые слова:

12.07.2005 Автоматизация OpenOffice.org Calc при помощи Borland C++ Builder 6.0

Аннотация: Рассматривается пример автоматизации OpenOffice.org Calc.

Ключевые слова: OpenOffice

16.02.2005 HOWTO: Глобальный COM-синглтон в DLL

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

Ключевые слова: Singleton, COM

9.03.2001 Директива #import

Аннотация: В данной статье приводится объяснение работы директивы #import компилятора Visual C++ и даны примеры её использования с MS Word, MS Excel, ADO DB и ActiveX Control.

Ключевые слова:

06.12.2006 import без указания путей к файлам

Аннотация: Здравствуйте, Wit, Вы писали:

Wit>P.S. директиву #import не хочется использовать по причине неоходимости точного указания путей к файлам


Пути к файлам давно можно не указывать:
[ccode]
// msado25.tlb
#import "libid:{00000205-0000-0010-8000-00aa006d2ea4}" auto_rename

// dao360.dll
#impor...

Ключевые слова:

17.05.2004 Проблема с #import ..... а может и не с ним

Аннотация: Здравствуйте, AndyCyborg, Вы писали:

Я с проблемами с ADO не сталкивался, поэтому и не сразу написал.

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

Ключевые слова:

29.05.2001 Добавление механизма self-unregistration в СОМ-сервера, созданные на основе библиотеки MFC

Аннотация: Статья посвящена реализации механизма self-unregistration в СОМ-серверах, созданных на базе библиотеки MFC. Эта возможность, просто необходимая для любого нормального СОМ-сервера, не добавляется в MFC-приложения по умолчанию.

Ключевые слова:

06.12.2002 Использование COM из DLL незаметно для клиента

Аннотация: Статья описывает технологию использования COM из DLL, загружаемых приложениями, ничего не знающих о COM. Такая ситуация часто возникает в плагинах.

Ключевые слова: COM, DLL

17.06.2002 ИНФО: Как получить Cx из Ix*

Аннотация: Где-то когда-то встречался вопрос, как из указателя на интерфейс получить указатель на класс, которым этот указатель имплементирован. Сейчас не могу найти где это было, а материал попался интересный. Может кому-то в ряде случаев и будет полезным.

HOWTO: Get a C++ Class from an Interface Pointer i...

Ключевые слова:

09.07.2004 Как использовать в IDL структуры из .h файлов

Аннотация: А>Можно ли как-то использовать в IDL-никах струкутры из .h файлов?
А>проблема с window-ой структурой WAVEFORMAT котору хочеться поюзать как параметр интерефейса..

RB>Обычно наоборот, по idl генерируют "ашники"...


А>В том то и беда что WAVEFORMAT структура и соотв. mmreg.h существовал задолго ...

Ключевые слова:

07.11.2002 Как создавать COM+-компоненты на .NET-е (это ответ, а не воп

Аннотация: Всем привет.

Навеяно вот этими топиками:

http://www.rsdn.ru/Forum/?mid=124975

Автор: SCS
Дата: 04.11.02

http://www.rsdn.ru/forum/Message.aspx?mid=125632&only=1
Автор: IT
Дата: 05.11.02

ну и еще многими другими... в общем достали.

Итак почему же столько проблем с COM+-ом если компоненты, и особенно клиента создавать средствами .NET Fram...

Ключевые слова:

11.03.2003 Кэш для Excel

Аннотация: В одно время у меня возникла необходимость в общении с Excel2000, при чем, объемы данных должны были проходить большие, что привело к появлению этой DLL-ки. При открытии файла все данные, находящиеся в нем загружаются в динамический строковый кэш (при нынешних объемах памяти это не так много) и потом можно работать с ним. К сожалению, форматирование не кэшируется, да и задач таких не ставилось. В результате тестирования программа, работающая с Excell с помощью OLE (COM тоже пробовали) втискивала туда 15000 ячеек за 50 секунд, а через эту DLL-ку за 3. Разница, как говорится, на лице :).

Ключевые слова: Excel

07.10.2005 Реализация COM-коллекций средствами C#

Аннотация: В настоящей статье не будет рассматриваться C++ with managed extensions – разработка COM-объектов с помощью этого языка программирования не очень существенно отличается от традиционной разработки с помощью C++. Ограничимся лишь C#, который позволяет разрабатывать COM-объекты гораздо проще, чем C++ или Delphi (субъективное мнение автора, основанное на личном практическом опыте). Более того, не будут здесь рассматриваться ни общие вопросы COM, ни конкретные механизмы и технологии C# для разработки COM – все это достаточно подробно документировано в MSDN. Будет рассмотрен абсолютно частный вопрос, который, к сожалению, не нашел отражения ни в MSDN, ни в других источниках информации, доступных автору, включая поиск в Сети – как средствами C# реализовать COM-коллекции.

Ключевые слова: COM-коллекции

Создание COM-коллекций

Аннотация: Пример коллекции на ATL/ascLib - 16 kb Пример коллекции на ATL/STL (из MSDN) - 21 kb Библиотека ascLib

Ключевые слова:

24.01.2004 Страницы свойств COM-объектов

Аннотация: В системах семейства Windows широко распространен пользовательский интерфейс на базе так называемых страниц свойств (Property Pages). Страницы свойств в виде закладок отображаются в специальном диалоговом окне, который называется "Панель свойств" (Property Sheet). Такие диалоги используются в Windows довольно часто от настроек шрифта и цвета, до управления безопасностью и параметрами системы. Property Page может использоваться не только как отдельный элемент управления. В объектной модели Windows она предоставляет собой графический интерфейс для просмотра и редактирования свойств некоторого COM-объекта. Об этой возможности использования страниц свойств пойдет речь в данной статье.

Ключевые слова: Property Pages, Property Sheet

Connection points

Как подключиться к событиям СOM-объекта на С++

Аннотация: Часто при использовании COM-объектов в С++-программах встает необходимость подключения к их событиям. Если вы используете MFC, VCL или другие высокоуровневые библиотеки классов, проблем не возникает, так как для решения этой задачи существуют «мастера» и т.п. Но когда такая проблема возникает при ра...

Ключевые слова:

21.09.2004 Как в ATL клиенте подписываться на события

Аннотация: OE>>Как в ATL клиенте подписываться на события надо объяснять?
E>ДА!

Ok, например в клиенте есть диалог, в котором нужно ловить события от COM-сервера:

class CMainDlg : public CAxDialogImpl<CMainDlg> , public CDialogResize<CMainDlg> {


добавляем туда следующ...

Ключевые слова:

07.12.2004 Connection Points и многопоточность

Аннотация: > 2) Законно ли в COM объектах использовать стандартные функции WIN API для создания и управления потоками (такие как CreateThread, TerminateThread и пр.)?

Законно. Надо только не забыть вызвать CoInitialize[Ex] в потоке. Так же лучше пользоваться __beginthreadex, для инициализации С++ ран...

Ключевые слова:

18.11.2004 Использование IConnectionPointImplMT

Аннотация: Здравствуйте, Kirill.CP, Вы писали:

KC>Да все правильно ATLCPImplMT.h

KC>В этом файле ошибки и происходят.

[ccode]
//<Nick> 17.07.2004
// DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);
DWORD dwGITCookie = reinterpret_cast<DWORD>(m_vec.GetUnknown(dwCookie));

.......

//<Nick ...

Ключевые слова:

18.04.2001 Добавление технологии Connection point в приложение на базе библиотеки MFC

Аннотация: Статья посвящена технологии Connection Points в программах на MFC. Автор кратко описывает сущность и назначение этой технологии, а затем демонстрирует создание COM-клиента и COM-сервера на базе MFC с её использованием.

Ключевые слова:

02.10.2002 Ошибка в реализации IDispEventImpl<>

Аннотация: В реализации IDispEventImpl имеется ошибка, которая так и не исправлена ни в одном из пакетов исправлений для VS6 (включая SP5). При обработке событий, параметры которых имеют различные типы данных и размеры, функции-обработчики событий получают некорректные значения параметров. Следующий пример буд...

Ключевые слова:

29.12.2004 QnA: Получение COM-событий в скриптах

Аннотация: Как получать COM-бытия в скриптах

Ключевые слова: VBScript, JScript, events, WithEvents

13.10.2005 Событие ActiveX контрола в HTML

Аннотация: Здравствуйте, Аноним, Вы писали:

А>Написан ActiveX контрол на ATL. Никак не могу подключиться к событию AсtiveX контрола на веб странице. Делаю примерно так:

А>[code]
А><HTML>
А><HEAD>
А><TITLE>ATL 3.0 test page for object MyControl</TITLE>
А></HEAD>
А><BODY>
А><SCRIPT language="JavaScript...

Ключевые слова:

Проблемы

18.09.2006 Бага в CoUninitialize

Аннотация: Доброго всем понедельника.

У меня от тоже добрый. На протяжении последнего времени меня, время от времени, долбило сообщение об AV (чур меня, чур меня) при деинициализации COM-а.

Вчера меня оно стало уже конкретно напрягать и сегодня, приготовив ведро с вазелином, решил ... багу до смерти.

...

Ключевые слова:

15.07.2001 Использование ATL для автоматизации MFC приложений

Аннотация: Download source - 40 KB

Ключевые слова:

28.10.2004 BSTR в параметрах COM методов

Аннотация: Рассматривается использование BSTR и указателей на BSTR в качестве параметров COM методов

Ключевые слова: BSTR

09.11.2004 LPCWSTR вместо BSTR?

Аннотация: Здравствуйте, ssm, Вы писали:

>насколько правомерным является передача в метод ожидающий BSTR, значения типа LPCWSTR?


Все зависит от наличия маршаллинга. Если компонент загружен inproc и используется "ранее связывание", то, скорее всего, строка будет передана и через LPWSTR. Если же имеется ма...

Ключевые слова:

28.09.2002 Категории

Аннотация: SH>Вопрос №1:
SH>При перечислении всех категорий через IEnumCATEGORYINFO перечисляются несколько категорий (штук десять), после чего очережой вызов Next заканчивается ошибкой E_OUTOFMEMORY. Если попытаться получить все скопом, в массив, то результат тот же, только сразу.

SH>Внимательное изучени...

Ключевые слова:

09.08.2004 Народ, помогите с разрушением SAFEARRAY!

Аннотация: А> Есть такой код:

А> SAFEARRAY * pSa = SafeArrayCreate(VT_BSTR, 1, rgsabound); А>... А> VARIANT var; А>... А> var.vt = VT_ARRAY | VT_BSTR; А> var.parray = pSa; А>... А> SafeArrayDestroy(pSa); А> VariantClear(&var);

А> Феня в том, что после выполнения данного кода прог...

Ключевые слова:

06.11.2003 COM метод с переменным числом параметров

Аннотация: А>Гуру, подскажите, есть возможность в ActiveX компоненте сделать метод, в который неизвестно, сколько будет передаваться параметров? Или, как вариант, можно в JavaScript создать массив, а потом каким-то образом "скормить" его ActiveX компоненте?

Vi2>Ключевое слово MIDLа [vararg]. Поищи зд...

Ключевые слова:

23.01.2004 Win 9x как DCOM клиент - список граблей

Аннотация: _>Сейчас читал статью comsec... У меня клиент на вин98 стоит, а сервер на вин2к, доменов нету. Может из-за этого?

Ну так с win98 надо было начинать. Итак список граблей на которые можно наступить при использовании win 9x как DCOM клиента:

0. Проверить что у пользователя, указываемого в COSERVE...

Ключевые слова:

C++ Builder и COM

29.01.2004 Advise возвращает 0x80040201

Аннотация: Здравствуйте, Vi2, Вы писали:

Vi2>Скорее всего CComUnkArray< n >, а не CComDynamicUnkArray. А если и CComDynamicUnkArray, то макрос _DEFAULT_VECTORLENGTH.


вообщем фишка оказалась в следующем — мастер от VC, когда генерит код использует CComDynamicUnkArray:

[ccode]
template <class T>
class...

Ключевые слова:

15.01.2006 Как умирают повисшие объекты?

Аннотация: Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, <Аноним>, Вы писали:


А>>Этот самый GUI использует COM объект с методом, в который

А>>передается другой COM объект ([in] параметр)
А>>Так вот бормановские врапперы похоже вызывают на один Release
А>>меньше, чем положено и в итоге имею кучу...

Ключевые слова:

COM и Scripting

25.04.2001 Создание COM-компонентов с помощью скриптовых языков

Аннотация: Главными целями разработки СОМ были создание распределенной компонентной архитектуры, взаимодействие компонентов во время исполнения, поддержка автоматизации приложений и совместимость со скриптовыми языками. СОМ старается быть настолько терпимым к языку, насколько это возможно, и теперь вы можете и...

Ключевые слова:

22.05.2004 Скрипты WSC и раннее связывание

Аннотация: OE>Написал JavaScript, оформил как COM объект, как описано в Создании COM-компонентов с помощью скриптовых языков

Автор(ы):
Дата: 25.04.2001
, зарегистрировал (успешно, проверил в OleView), создал для него tlb (тоже видна в OleView).
OE>Теперь хочу попользовать.
OE>В...

Ключевые слова:

20.06.2003 Скрипты и [out] параметры COM-методов

Аннотация: Здравствуйте, Shire, Вы писали:

[q]
S>Вот тут мучил контрол MSWinsock.Winsock (поставляется с VB Ent. Edition) из JScript (WSH).
S>У него есть методы GetData и PeekData, которые принимают ссылку на VARIANT.
[code]
S>HRESULT xxxData([b][in, out]...

Ключевые слова:

09.12.2004 Переменное число параметров из Java Script в COM

Аннотация: А>хочу из Java Script в свой COM передавать данные через SAFEARRAY.

А>данные буду передавать следующие:

А>числа (пример: 1, 34, 765)
А>строки (пример: "asd", "a", "dj35")

если проблема в том что неизвестно заранее число параметров и их тип, то так:

[midl]
[id(1), helpstring("Метод с пере...

Ключевые слова:

05.03.2005 COM-Interfaces в JScript

Аннотация: Здравствуйте, Аноним, Вы писали:

А>переделал недавно СОМ-сервер — сделал вместо одного интерфейса с кучей функций несколько небольших интерфейсов (по функциональности). Объявление теперь выглядит примерно так:

А>...
А>все работает и даже работает в макросах в офисе, НО когда я пытаюсь вызвать F...

Ключевые слова:

29.12.2004 QnA: Получение COM-событий в скриптах

Аннотация: Как получать COM-бытия в скриптах

Ключевые слова: VBScript, JScript, events, WithEvents

13.10.2005 Событие ActiveX контрола в HTML

Аннотация: Здравствуйте, Аноним, Вы писали:

А>Написан ActiveX контрол на ATL. Никак не могу подключиться к событию AсtiveX контрола на веб странице. Делаю примерно так:

А>[code]
А><HTML>
А><HEAD>
А><TITLE>ATL 3.0 test page for object MyControl</TITLE>
А></HEAD>
А><BODY>
А><SCRIPT language="JavaScript...

Ключевые слова: