![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как завершить работу приложения [D7, WinXP]
stasSSW © (2003-12-30 23:14:00)Приложение должно работать постоянно: сканировать директорию на предмет появления файлов по определенной маске и выдавать сигналы при их появлении. Как оформить приложение, чтобы в какой-то момент времени (не всегда постоянный) приложению можно было передать какой-то сигнал или событие, чтобы оно завершило работу? Заранее спасибо, мастерам.
Suntechnic (2004-02-07 09:05:00) [1]Дополню jack128 © (06.02.04 13:01) [4].
Чтобы обойтись без цикла сообщений создаёшь объект межпроцессорной синхронизации (например, как здесь уже советовали, Event) и, как я понимаю, используешь FindFirstChangeNotification(FindNextChangeNotification). Далее оба хэндла используешь в ф-ции WaitForMultipleObjects с 3-им параметром false. При переходе одного из этих объектов в signaled состояние выполнение потока возобновиться. Что именно произошло (либо действия с файлами либо команда извне о завершении) можно узнать анализируя возвращаемое ф-цией значение (подробности в справке).
jack128 (2004-02-06 13:01:00) [2]
> stasSSW (31.12.03 13:43) [2]
ну тогда можно использовать объекты синхронизации (Events, например)
kostik (2004-02-06 11:55:00) [3]Пошли на хэндл главного окна этого приложения сообщение WM_CLOSE
SendMessage(hWnd,WM_CLOSE,0,0);
hWnd - определяется с помощью FindWindow( nil,заголовок окна);
stasSSW (2003-12-31 13:43:00) [4]jack128, не предполагалось, но если нет другого варианта, то придется сделать. Спасибо
jack128 (2003-12-31 00:29:00) [5]Основной поток имеет цикл обработки сообщений? Если, да то пошли ему WM_QUIT..