Запущен или нет интерфейс

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Den_Is
Постоянный обитатель
Сообщения: 169
Зарегистрирован: 08 авг 2005, 20:11
Откуда: Омск

Запущен или нет интерфейс

Сообщение Den_Is »

Возможно ли каким нибудь образом определить запущен ли в данный момент интерфейс?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

ну галка как то определяет, когда запуск с меню идет. Наверное можно.
Посмотрите еще интерактивные отчеты во ФРО - но там другой способ счета своих фейсов.
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

посмотрите ф-ции конфигуратора cfsGetObjInfo
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

С помощью функции Notify(Command: word; Info: longint): longint можно бросить в деск широковещательное сообщение Command. Тут Info - просто дополнительный целочисленный параметр. Такое сообщение пройдет через интерфейсный handleevent всех вставленных в деск интерфейсов. Тот из них, кого мы "ищем", должен в соответствующем обработчике остановить процесс "раздачи" с помощью вызова функции Stop (или Abort - не помню точно, проверьте). Идентификатор "ответчика" возвращается в качестве результата выполнения функции. Если Вы хотите проверить, не запущена ли другая копия вызываемого интерфейса, то можете использовать приблизительно такой код:

Код: Выделить всё

...
var
  Notifying: boolean; // чтобы не "ответить" на свой собственный запрос
...
HandleEvent
  cmInit:
  {
    Notifying := true;
    if Notify(cmAmI, 0) <> 0
    {
      // скорее всего сообщение "словила" другая копия этого же интерфейса; сворачиваем работу
      abort;
      exit;
    }
    Notifying := false;
    ...
  }
  ...
  cmAmI:
  {
    // сообщение пришло от другой копии;
    if not Notifying
      // отрапортовать об успешной обработке события
      Stop; // или Abort - не помню точно, проверьте
  }


Виталий
Ответить