powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выполнить дествия при каком нибудь события???
13 сообщений из 13, страница 1 из 1
Выполнить дествия при каком нибудь события???
    #35150342
BDAbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо выполнить какие нибудь дествия как только появится файл в каталоге, можно ли это реализовать каким нибудь способом, кроме компонента TIMER?
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35150540
You can detect when files or directories are added

пример в солюшинах
Binding to Windows Message Events \ File/Folder Shell Events

+ сайт производителя - ссылку забыл

удачи
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35150562
You can detect when files or directories are added, updated or deleted to your system using Windows messages.



Sample: to run the sample, click on the Enable Event button. Once the event is active, open up Windows Explorer and try adding, removing or renaming a file or folder. You can also change a file’s attributes such as making it read-only.



Details:



This sample uses the following binding to handle file detection:



BINDEVENT(_VFP.hWnd, WM_USER_SHNOTIFY, THIS, "handlewinmsg")



Note: WM_USER_SHNOTIFY is based on the WM_USER message



In addition, this sample uses a number of Shell functions to detect changes to files and directories.



You can find additional information about shell events in MSDN:



WM_USER Message

Shell Programmer’s Guide

SHChangeNotifyRegister function



Click on the Constants button to view values for the #DEFINES.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35150579
http://msdn2.microsoft.com/en-us/library/ms947678.aspx

блин, еле нашел
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35150608
BDAbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сапсибо щас я почитаю
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35152091
avg66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуй,разобрался? Меня тоже интересует эта тема - только ничего не понятно.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35153615
BDAbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да что то я не могу разобраться, может ктонибудь примерчик с обяснениями бросит если не трудно.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35153964
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, где находится пример, уже указали. Вместе с FoxPro поставляется проект примеров Solution.pjx. Открыть этот проект можно дав в командном окне такую команду

Код: plaintext
MODIFY PROJECT (Home( 2 )+"Solution\Solution.pjx")

Далее на закладке CODE находите файл main. Встаете на него и нажимаете кнопку "Run". В открывшемся окне находите в списке строку "New in Visual FoxPro 9.0", а в нем строку "Binding to Window Message events". Жмете кнопку Run Sample, чтобы запустить пример.

В открывшейся форме в раскрывающемся списке (в левой части формы) выбираете элемент "File/Folder Shell Events" и жмете кнопку "Enable Events", чтобы запустить процесс отслеживания файловых событий. При нажатии кнопки возникнет вопрос, по каким директориям будем производить отслеживание? "Да" - только по директории FoxPro, "Нет" - по всем директориям без исключений.

Выбираете "Нет", затем открываете проводник и начинаете создавать/удалять файлы и директории. Потом возвращаетесь в FoxPro и видите журнал того, что Вы делали с файлами и директориями.

На той же форме примера кнопка "View Source" откроет класс в режиме модификации, в котором и происходит обработка.

Суть обработки проста. Функция BindEvents() связывает системные события, направленные в окно с указанным hWnd с неким методом. Другими словами, как только в окне с указанным hWnd происходит определенное событие, автоматически выполняется указанное событие FoxPro.

Чтобы события по созданию/изменению файлов и директорий перенаправлялись в FoxPro используют API-функцию SHChangeNotifyRegister().

А чтобы после обработки события FoxPro все-таки выполнилось "штатное" событие Windows в самом конце кода обработки FoxPro дается еще одна API-функция CallWindowProc(). Ну, как некий аналог DoDefault() в FoxPro.

Ну, а "детали" всей этой "кухни" смотрите в классах.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35155545
BDAbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ я начитался про свщйство BINDEVENT и я не понял каким образом можно решить мою задачу, мне надо запустить процедуру как только в каталоге появляется определенный файл без компонента TIMER.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35156306
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BindEvent() назначет тот метод, который будет выполнен при наступлении определенного события. В частности, в VFP9 можно назначить метод, который будет выполнен при создании файла.

Поскольку BindEvent() не может назначить процедуру, то код нужной процедуры надо либо "обернуть" в метод собственного класса на базе Custom (вызвать процедуру из метода), либо просто перенести код процедуры в методы собственного класса.

Никакого отношения к таймеру BindEvent() не имеет.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35156702
avg66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это можно только в VFP9.0 (наверное).
В VFP8 BindEvent() воспринимает только события экрана (объекта _screen) или других фоксовских объектов.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35156773
avg66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это можно только в VFP9.0 (наверное).
В VFP8 BindEvent() воспринимает только события экрана (объекта _screen) или других фоксовских объектов.
...
Рейтинг: 0 / 0
Выполнить дествия при каком нибудь события???
    #35157016
BDAbda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМНу, где находится пример, уже указали. Вместе с FoxPro поставляется проект примеров Solution.pjx. Открыть этот проект можно дав в командном окне такую команду

Код: plaintext
MODIFY PROJECT (Home( 2 )+"Solution\Solution.pjx")

Далее на закладке CODE находите файл main. Встаете на него и нажимаете кнопку "Run". В открывшемся окне находите в списке строку "New in Visual FoxPro 9.0", а в нем строку "Binding to Window Message events". Жмете кнопку Run Sample, чтобы запустить пример.

В открывшейся форме в раскрывающемся списке (в левой части формы) выбираете элемент "File/Folder Shell Events" и жмете кнопку "Enable Events", чтобы запустить процесс отслеживания файловых событий. При нажатии кнопки возникнет вопрос, по каким директориям будем производить отслеживание? "Да" - только по директории FoxPro, "Нет" - по всем директориям без исключений.

Выбираете "Нет", затем открываете проводник и начинаете создавать/удалять файлы и директории. Потом возвращаетесь в FoxPro и видите журнал того, что Вы делали с файлами и директориями.

На той же форме примера кнопка "View Source" откроет класс в режиме модификации, в котором и происходит обработка.

Суть обработки проста. Функция BindEvents() связывает системные события, направленные в окно с указанным hWnd с неким методом. Другими словами, как только в окне с указанным hWnd происходит определенное событие, автоматически выполняется указанное событие FoxPro.

Чтобы события по созданию/изменению файлов и директорий перенаправлялись в FoxPro используют API-функцию SHChangeNotifyRegister().

А чтобы после обработки события FoxPro все-таки выполнилось "штатное" событие Windows в самом конце кода обработки FoxPro дается еще одна API-функция CallWindowProc(). Ну, как некий аналог DoDefault() в FoxPro.

Ну, а "детали" всей этой "кухни" смотрите в классах.

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


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