![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с семафорами
NED © (2003-06-18 19:28:00)
Подскажите, как работать с одним семафором из разных, автономных программ?
MBo (2003-06-19 15:09:00) [1]
не передавай THandle, а открывай в другом процессе по имени
Ned (2003-06-19 14:36:00) [2]Вот и код:
1. Создание семафора (приложение 1)
semaphore_name := "Plugin_semaphore_1";
( nil, 1, 10000, PChar(semaphore_name)Вот и код:
1. Создание семафора (приложение 1)
semaphore_name := "Plugin_semaphore_1";
hSem := CreateSemaphore(nil, 1, 10000, PChar(semaphore_name)); // тут hSem : THandle, он передается в приложение 2 через параметр командной строки
2. Увеличиваем значение семафора при открытии приложения 2
ReleaseSemaphore(hSem, 1, nil);
3. Уменьшаем значение семафора при закрытии приложения 2
WaitReturn := WaitForSingleObject(hSem, 0);
4. В приложении 1 (при его закрытии) смотрим на семафор, чтобы узнать, есть ли у нас запущенные приложения 2
WaitReturn := WaitForSingleObject(hSem, 0);
Всё.
panov (2003-06-19 13:18:00) [3]
Код приводи. Ясновидцев здесь очень мало.
Ned (2003-06-19 13:13:00) [4]
Так, а дальше? Делаю именнованным, точнее так и сделал с самого начала, но незадача в том, что все здорово работает в приложении, которое его создало, другое же приложение, которое к нему обращается не получает к семафору доступа.
В связи с чем вопрос, как обратиться к поименованному семафору по имени, из приложения которое его не создавало?
MBo (2003-06-19 05:38:00) [5]
Сделать его именованным.