Страница 1 из 1

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

Добавлено: 26 июл 2007, 15:33
Den_Is
Возможно ли каким нибудь образом определить запущен ли в данный момент интерфейс?

Добавлено: 27 июл 2007, 00:30
edward_K
ну галка как то определяет, когда запуск с меню идет. Наверное можно.
Посмотрите еще интерактивные отчеты во ФРО - но там другой способ счета своих фейсов.

Добавлено: 27 июл 2007, 13:01
san
посмотрите ф-ции конфигуратора cfsGetObjInfo

Добавлено: 21 авг 2007, 03: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 - не помню точно, проверьте
  }