---
title: "Интерфейс событий приложения ksKompasObjectNotify/IKompasObjectNotify"
type: interface
api: [api5]
tags: [interface, api5, kskompasobjectnotify5]
sources:
  - kskompasobjectnotify5.html
---

*API интерфейсов. Версия 5 > Интерфейсы событий API5  > События в КОМПАС Общие сведения *


## Интерфейс событий приложения ksKompasObjectNotify/IKompasObjectNotify

| ksKompasObjectNotify | - интерфейс Automation |
| --- | --- |
| IKompasObjectNotify | - интерфейс COM |
Позволяют контролировать состояние приложения.
В Automation источником событий для подписки являются:
•для API интерфейсов версии 5 - объект KompasObject.
•для API интерфейсов версии 7 - объект IApplication.
В СOM источника нет.
ksKompasObjectNotify, IKompasObjectNotify - события
ksKompasObjectNotify/ IKompasObjectNotify - методы


## ApplicationDestroy - Закрытие приложения

Синтаксис Automation:
```
BOOL ApplicationDestroy();
Возвращаемое значение:
- Не используется.
```
Синтаксис COM:
```
BOOL ApplicationDestroy();
Возвращаемое значение:
- Не используется.
```
Примечание:
1. Источником события является интерфейс KompasObject.
2. Индекс события задан в перечислении событий приложения....
3. При обработке данного события необходимо отписаться от всех событий. Библиотека должна сама следить за отпиской событий.


## BeginCloseAllDocument - Начало закрытия всех открытых документов

Синтаксис Automation:
```
BOOL BeginCloseAllDocument();
```
Синтаксис COM:
```
BOOL BeginCloseAllDocument();
Возвращаемое значение:
TRUE    - закрытие всех открытых документов,
FALSE    - закрытие всех открытых документов запрещено.
```
Примечание:
Индекс события задан в перечислении событий приложения....


## BeginCreate - Начало создания документа (до диалога выбора типа)

Синтаксис Automation:
```
BOOL BeginCreate (long docType);
```
Синтаксис COM:
```
BOOL BeginCreate (long docType);
Входные параметры:
docName    - тип документа,
0    - если пользователь запросил диалог создания документа.
Возвращаемое значение:
TRUE    - создать документ,
FALSE    - создание документа запрещено.
```
Примечание:
Источником события является интерфейс KompasObject.


## BeginOpenDocument - Начало открытия документа

Синтаксис Automation:
```
BOOL BeginOpenDocument (BSTR docName);
Входные параметры:
docName    - имя файла документа.
Возвращаемое значение:
TRUE    - открыть документ,
FALSE    - не открывать документ.
```
Синтаксис COM:
```
BOOL BeginOpenDocument (char * docName);
Входные параметры:
docName    - имя файла документа.
Возвращаемое значение:
TRUE    - открыть документ,
FALSE    - не открывать документ.
```
Примечание:
1. Источником события является интерфейс KompasObject.
2. Индекс события задан в перечислении событий приложения....


## BeginOpenFile - Начало открытия документа (до диалога выбора имени)

Синтаксис Automation:
```
BOOL BeginOpenFile();
```
Синтаксис COM:
```
BOOL BeginOpenFile();
Возвращаемое значение:
TRUE    - вызвать диалог открытия документа,
FALSE    - вызов диалога открытия документа запрещен.
```
Примечание:
Индекс события задан в перечислении событий приложения....


## BeginRequestFiles - Запрос имен файлов

Синтаксис Automation:
```
BOOL BeginRequestFiles( long requestID, VARIANT * files );
```
Синтаксис COM:
```
BOOL BeginRequestFiles( long requestID, VARIANT * files );
Входные параметры:
requestID    - тип запроса файлов из перечисления ksRequestFilesTypeEnum.
Выходные параметры:
files    - имя файла или список SafeArray файлов.
Возвращаемое значение:
TRUE    - использовать стандартный диалог выбора файлов,
FALSE    - если список файлов задан - использовать файл или файлы из списка, если список файлов не задан - отмена выбора файлов.
```
Примечание:
1. Если выбран один файл, то в VARIANT его имя можно положить как строку, тип VARIANT-а - VT_BSTR. Если выбрано несколько файлов, то их имена в VARIANT нужно положить как массив строк тип VARIANT-а - VT_ARRAY | VT_BSTR.
2. Возможность множественного выбора и допустимые расширения файлов зависят от типа запроса файлов.
3. В данных событиях в отличие от других событий начала какого либо действия требуется обработка трех состояний:
•отказ пользователя или обработка события выполнена полностью на стороне библиотеки - событие возвращает FALSE;
•событие возвращает TRUE и имя файла для продолжения выполнения команды - процесс продолжается без запуска диалога выбора файла или файлов;
•событие возвращает TRUE, но имя файла не возвращается - запускается стандартный диалог выбора файла из системы КОМПАС.


## ChangeActiveDocument - Переключение на другой активный документ

Синтаксис Automation:
```
BOOL ChangeActiveDocument (LPDISPATCH pDoc, long docType);
Входные параметры:
pDoc    - указатель на интерфейс IDispatch открытого документа,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Синтаксис COM:
```
BOOL ChangeActiveDocument(long pDoc, int docType);
Входные параметры:
pDoc    - указатель на открытый документ,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Примечание:
1. Источником события является интерфейс KompasObject.
2. Индекс события задан в перечислении событий приложения....


## CreateDocument - Документ создан

Синтаксис Automation:
```
BOOL CreateDocument (LPDISPATCH pDoc, long docType);
Входные параметры:
pDoc    - указатель на интерфейс IDispatch созданного документа,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Синтаксис COM:
```
BOOL CreateDocument (long pDoc, int docType);
Входные параметры:
pDoc    - указатель на созданный документ,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Примечание:
1. Источником события является интерфейс KompasObject.
2. Индекс события задан в перечислении событий приложения....


## IsNotIifyProcess - Ограничение обрабатываемых событий

Синтаксис Automation:
```
Не используется.
```
Синтаксис COM:
```
BOOL IsNotifyProcess (int notifyType);
Входной параметр:
notifyType    - номер события в перечислении событий.
Возвращаемое значение:
TRUE    - событие будет обрабатываться,
FALSE    - событие обрабатываться не будет.
```
Примечание:
В COM перед любым вызовом события система сделает запрос о возможности его обработки с использованием данного метода. Библиотека сама может ограничивать обрабатываемые события.


## KeyDown - Клавиша нажата и удерживается нажатой

Синтаксис Automation:
```
BOOL KeyDown (long * key, long flags, BOOL sysKey);
```
Синтаксис COM:
```
BOOL KeyDown( long * key, long flags, BOOL sysKey);
Входные параметры:
key    - код нажатой клавиши,
flags    - флаг клавиатуры,
sysKey    - признак нажатия системной клавиши.
Выходные параметры:
key    - измененный код нажатой клавиши.
Возвращаемое значение:
TRUE    - разрешить обработку нажатой клавиши,
FALSE    - запретить обработку нажатой клавиши.
```
Примечание:
1. Индекс события задан в перечислении событий приложения...
2. Благодаря автоматическому повторению кода клавиши при удержании ее нажатой, до появления события wm_keyup может выдаваться несколько событий wm_keydown. Значение разряда 30 параметра flags позволяет определить, было ли событие wm_keydown первым или является повторным во время удержания клавиши нажатой.
3. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС.


## KeyPress - Одиночное нажатие клавиши

Синтаксис Automation:
```
BOOL KeyPress (long * key, BOOL sysKey);
```
Синтаксис COM:
```
BOOL KeyPress (long * key, BOOL sysKey);
Входные параметры:
key    - код нажатой клавиши,
flags    - флаг клавиатуры,
sysKey    - признак нажатия системной клавиши.
Выходные параметры:
key    - измененный код клавиши.
Возвращаемое значение:
TRUE    - разрешить обработку нажатой клавиши,
FALSE    - запретить обработку нажатой клавиши.
```
Примечание:
1. Индекс события задан в перечислении событий приложения....
Если syskey = false, была нажата обычная клавиша, что соответствует событию wm_keyup, если syskey = true, была нажата системная клавиша, что соответствует событию wm_syskeyup.
2. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС.


## KeyUp - Клавиша отпущена

Синтаксис Automation:
```
BOOL KeyUp (long * key, long flags, BOOL sysKey);
```
Синтаксис COM:
```
BOOL KeyUp (long * key, long flags, BOOL sysKey);
Входные параметры:
key    - код нажатой клавиши,
flags    - флаг клавиатуры,
sysKey    - признак нажатия системной клавиши,
Выходные параметры:
key    - измененный код нажатой клавиши.
Возвращаемое значение:
TRUE    - разрешить обработку нажатой клавиши,
FALSE    - запретить обработку нажатой клавиши.
```
Примечание:
1. Индекс события задан в перечислении событий приложения....
2. Если syskey = false, была нажата обычная клавиша, что соответствует событию wm_keyup, если syskey = true, была нажата системная клавиша, что соответствует событию wm_syskeyup.
3. Если библиотека обработала событие нажатия клавиши и нужно запретить обработку события другими подписчиками, то нужно обнулить код клавиши т.е. *key = 0 и вернуть FALSE, если нужно запретить обработку события системой КОМПАС.


## OpenDocument - Документ открыт

Синтаксис Automation:
```
BOOL OpenDocument (LPDISPATCH pDoc, long docType);
Входные параметры:
pDoc    - указатель на интерфейс IDispatch открытого документа,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Синтаксис COM:
```
BOOL OpenDocument(long pDoc, int docType);
Входные параметры:
pDoc    - указатель на открытый документ,
docType    - тип документа DocType.
Возвращаемое значение:
- Не используется.
```
Примечание:
1. Источником события является интерфейс KompasObject.
2. Индекс события задан в перечислении событий приложения....
