Запущен или нет интерфейс
Модераторы: m0p3e, edward_K, Модераторы
Запущен или нет интерфейс
Возможно ли каким нибудь образом определить запущен ли в данный момент интерфейс?
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
С помощью функции 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 - не помню точно, проверьте
}
Виталий