---
title: "ExternalRunCommand - Головная функция библиотеки"
type: guide
api: [api7]
tags: [guide, api7, externalruncommand]
sources:
  - externalruncommand.html
---

*Создание прикладных библиотек  > Оформление прикладных библиотек типа ActiveX  > Пример простейшей программы в среде VB, оформленной в виде ActiveX библиотеки КОМПАС  > Функции *


## ExternalRunCommand - Головная функция библиотеки

void ExternalRunCommand (short command,
short mode,
IDispatch* kompas);
Синтаксис Visual Basic:
Public Sub ExternalRunCommand (ByVal command As Integer,
ByVal mode As Integer,
ByVal kompas_ As Object)
Входные параметры:
| command | - номер выполняемой команды; |
| --- | --- |
| mode | - режим работы: 0 - normal - обычный режим, 1 - demo - вызов из дистрибутивной задачи в деморежиме, 2 - demoEx - вызов из демоверсии; |
| kompas | - интерфейс KompasObject или IApplication. |
Примечание:
1. При вызове команды библиотеки из меню, панели инструментов или при редактировании библиотечного элемента по двойному нажатию кнопки мыши управление передается этому методу с номером выбранной команды.
2. Библиотека должна обязательно содержать один из предопределенных методов ExternalRunCommand, который определяет точку входа в приложение или LibInterfaceNotifyEntry. Наличие хотя бы одного из этих методов позволяет системе КОМПАС идентифицировать произвольный ActiveX DLL как собственное приложение.
3. Параметр kompas может быть указателем на интерфейс IApplication, если в библиотеке есть метод IsOnApplication7, и этот метод вернул значение TRUE, т.е. библиотека работает на API версии 7. Во всех остальных случаях параметр kompas будет указателем на интерфейс KompasObject.


## Пример использования функции ExternalRunCommand

Public Sub ExternalRunCommand(ByVal command As Integer, ByVal mode As Integer, ByVal Kompas As Object)
Select Case command
Case 1
Dim document As Object 'КОМПАС-документ
Set document = Kompas.Document3D '3D-документ
If Not document is Nothing Then
Kompas.ksMessage "Получен 3D-документ"
End If
Set document = Nothing 'освободить документ
Case Else
MsgBox "Команда " + Str(command) + " не выполнена"
End Select
End Sub
