powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ? FindFirstCangeNottification из Win32Api в Фоксе
3 сообщений из 3, страница 1 из 1
? FindFirstCangeNottification из Win32Api в Фоксе
    #35152422
avg66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как применить функцию FindFirstCangeNottification из Win32Api для запуска фоксовского обработчика события.
Нужно определить(обработать) событие появление файла в папке.
А также функции FindNextCangeNottification и FindCloseCangeNottification
Если можно покажите простой пример
...
Рейтинг: 0 / 0
? FindFirstCangeNottification из Win32Api в Фоксе
    #35153245
avg66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я разобрался с этой функцией.
Обработчик на это событие повесить НЕ УДАЛОСЬ - VFP может только пассивно(ничего не выполняя в момент ожидания) ждать, когда произойдёт событие.
Активный способ проверки - Timer.
Пример:

=WaitForFileChanges("C:\capture")

*---------------------------------------------------------------
#define WAIT_OBJECT_0 0
#define INVALID_HANDLE_VALUE -1
#define INFINITE 0xFFFFFFFF && Infinite timeout бесконечно ждём

#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100

*---------------------------------------------------------------
PROCEDURE WaitForFileChanges(strPath)
DECLARE Long FindFirstChangeNotification IN WIN32API ;
String PathName, Long bWatchSubTree, Long dwNotifyFilter
DECLARE Long WaitForSingleObject IN WIN32API ;
Long hHandle, Long dwMilliseconds
DECLARE LONG FindCloseChangeNotification IN kernel32 ;
INTEGER hChangeHandle

LOCAL dwChangeHandle, dwWaitStatus
dwChangeHandle = FindFirstChangeNotification(strPath,.F.,FILE_NOTIFY_CHANGE_FILE_NAME)
* strPath && directory to watch
* .F. && do not watch the subtree
* FILE_NOTIFY_CHANGE_FILE_NAME && watch file name changes

If (dwChangeHandle = INVALID_HANDLE_VALUE)
ERROR "Ошибка FindFirstChangeNotification "
Else
dwWaitStatus = WaitForSingleObject(dwChangeHandle, INFINITE) && ждём сообщения
If dwWaitStatus = WAIT_OBJECT_0
&& Process changes here
MESSAGEBOX("Изменения файлов в " + strPath + " folder.")
EndIf
ENDIF

? FindCloseChangeNotification(dwChangeHandle) && снимаем наблюдение
...
Рейтинг: 0 / 0
? FindFirstCangeNottification из Win32Api в Фоксе
    #35156510
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Нужно определить(обработать) событие появление файла в папке.

а почему стандартного таймера не хватает ?
+ функция File
зачем апи здесь ?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ? FindFirstCangeNottification из Win32Api в Фоксе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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