powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Событие базы -для всех пользователей пользователей у кого эта база открыта
11 сообщений из 11, страница 1 из 1
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367732
rock-n-roll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток

Может кто подскажет:совершается определенное действие с базой - все юзверы базы должны он нем "сразу узнать"
Таймер- не подходит- гонять постоянно какой-то код на проверку ситуации которая раз в год бывает!?А реакция должна быть "относительно мгновенной".
У лисы, в примерах от мелкомягких описана "ловля" виндовссобытий себе в среду(вот пока к нему склоняюсь), но как-то тоже не так: создать сгенерировать внешнее событие с тем чтобы затянуть обратно к себе?

Есть кокой-нибудь более рациональный способ?
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367744
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь через mailslot оповещать, тут обертку с примером давал.
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367790
rock-n-roll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, интересно .... по изучаю обязательно... очень может пригодиться для чего-нибудь другого а для моей тривиальной задачи
"Ловить" виндовс событие ну и скажем менять что либо во вспомогательном текстовике -пожалуй попроще будет(ну если еще кто что не предложит)
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367816
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rock-n-rollвиндовс событие
Что конкретно под этим подразумевается? В виндовсе много всяких "событий".
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367826
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи код этого "Ловить" из примеров. Какие функции WinAPI используются.
Просто интересно: либо я чего-то не знаю про виндовс, либо ты неправильно понял о чем там речь.
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367834
rock-n-roll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

там, я посмотрел, даже пример "создание изменение в файле какого-нибудь каталога", ну вот и я буду что-либо менять в темр файле у мня все узверы под терминалкой, файлсервер, чтож у лисы ничего своего на эту тему нет
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367854
rock-n-roll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

оригинал найти не могу но там примерно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
rgflnOut=0
szPath=SYS(5)+CURDIR()
pidl=0
nRecursive=1

SHILCreateFromPath(STRCONV(szPath+CHR(0),5),@pidl,@rgflnOut)

lcSEntry = BINTOC(pidl,"4rs")+BINTOC(nRecursive,"4rs")	
nSources= 0x1000 * nRecursive + 3


THIS.dwShNotify= SHChangeNotifyRegister(_vfp.hWnd, nSources,;
  14539 , ;
  1034,1, ;
  @lcSEntry)

BINDEVENT(_VFP.hWnd, 1034, THISFORM, "tempevent")
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367874
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rock-n-rollDima T,

там, я посмотрел, даже пример "создание изменение в файле какого-нибудь каталога", ну вот и я буду что-либо менять в темр файле у мня все узверы под терминалкой, файлсервер, чтож у лисы ничего своего на эту тему нет
Не нашел ничего похожего в примерах фоксовых. Где именно ты его нашел? Как он называется?

Если правильно понимаю там используется FindFirstChangeNotification() для мониторинга изменений в заданной папке, но она не может известить фокс. Можешь просто ожидать создание файла, как появился - событие произошло.
Тут надо или постоянно опрашивать по таймеру или вообще повиснуть в ожидании события, но чтобы повиснуть - надо отдельный поток, а фокс однопоточный.

Оповещение фокса без таймеров может быть только одним способом: через очередь сообщений, с помощью BINDEVENT() вешаешь свой обработчик на конкретное сообщение, и как только оно придет - фокс запустит обработчик. Но чтобы оно пришло кто-то должен его послать, в моем примере это делает DLL.
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367911
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rock-n-rollDima T,

оригинал найти не могу но там примерно так
Похоже в виндовс добавили надстройку над FindFirstChangeNotification(), которая дождется изменений в папке и окну фокса сообщение пошлет.

Используй ее, она по сети тоже должна работать. В ней что смущает?
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367932
rock-n-roll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

в ней как раз таки ничего не смущает, и пока это оптимальный вариант из прозвучавших, смущает что в лисе нет/или я не знаю функционала на такую тривиальную задачу. Я думал может кто подскажет что.

оригинал так и не нашел, но он был(и давно его видел)-вот переделка
...
Рейтинг: 0 / 0
Событие базы -для всех пользователей пользователей у кого эта база открыта
    #39367957
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rock-n-rollсмущает что в лисе нет/или я не знаю функционала на такую тривиальную задачу.
Задача вовсе не тривиальная. По сути здесь нужен обмен сообщениями, т.е. должен быть какой-то сервер (приложение), который оповестит всех заинтересованных о наступлении события. В твоем случае этим сервером работает файловая система (точнее та часть виндовса которая обслуживает ФС), т.к. у нее есть встроенный механизм оповещения об изменениях в заданной папке. Больше ничего похожего в виндовсе нет.
Проблема именно в виндовсе, а не в фоксе. Всем кому надо - делают свой сервер и клиенты цепляются к нему (TCP или NamedPipe). Но этот вариант будет еще сложнее чем мой пример с mailslot.

В случае с mailslot центрального сервера нет, т.к. там используется протокол UDP который позволяет слать широковещательные сообщения по сети, на них и построено.

Тот пример с mailslot я выложил как раз потому что проблема есть, а простых решений нет.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Событие базы -для всех пользователей пользователей у кого эта база открыта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]