Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2016, 20:17   #1
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию Отследить закрытие

Добрый вечер, подскажите в таком вопросе.
Мне требуется открывать из программы файлы, но после того как с ними поработали, требуется отследить завершение работ и еще операции проделать из программы, но т.е. после того как файл закрыт уже.

Но файлы абсолютно любые. Я сейчас использую ShellExecute, но он не позволяет отследить закрытие программы, или я такого не нашел.

Я начал использовать CreateProcess со связью WaitForSingleObject, всё работает и отследить получается, НО он работает только для приложений, на файлах он начал выбивать ошибки, ко всему для него нужно статично прописывать пути, нежели как в первом варианте есть выбор программы по умолчанию, да и она сама тип файла определяет.

Ну вот и вопрос, можно ли для ShellExecute отследить закрытие программы или файла, короче того что открыто будет.
Или же как для CreateProcess сделать открытие всех файлов, может через что-то подобное open, чтобы тип файла или программа через которую надо открыть сама определялась или открывала окно предложения выбора.
demon31 вне форума Ответить с цитированием
Старый 14.12.2016, 20:24   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Система может информировать об изменениях файла напрямую.

Ref:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
waleri вне форума Ответить с цитированием
Старый 14.12.2016, 21:03   #3
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию

Даже не знаю нормально ли это будет работать, мне не важно каждое изменение, мне важно начало и конец, т.е. открытие и закрытие файла. А тут как я понял может быть такое, что отследит изменение в процессе работы т.е. я например сохраню, но не закрою, тогда вся моя конструкция сломается.
demon31 вне форума Ответить с цитированием
Старый 15.12.2016, 09:19   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

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

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

Если вам нужно обязательно знать когда файл закрыт - пишите драйвер, но это не решит проблемы, о которой я упомянул выше.
waleri вне форума Ответить с цитированием
Старый 15.12.2016, 10:45   #5
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
открыть ктото другой...
С файлом работаю пока что только я. Ну да ладно, раз выбора особо нет, то попробую.
demon31 вне форума Ответить с цитированием
Старый 15.12.2016, 12:51   #6
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Получив сигнал изменения файла открывайте файл в ексклюзивном режиме. Если получится, значит никто другой в файл писать пока не будет - либо файл больше не открыт, либо открыт в режиме чтения, что по сути тоже самое.
Да не, всё как я и сказал, я собрал данную штуковину. Изменение отслеживается при сохранение, то есть, уже не совсем то что нужно. Если я при первом же сохранение сделаю какие-то изменения, то всё сломается, а файл не был закрыл, его просто сохранили. И ЕЩЕ прям конкретный косяк, а как мне экзешники и просто программы отслеживать таким способом?!
demon31 вне форума Ответить с цитированием
Старый 15.12.2016, 13:22   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от demon31 Посмотреть сообщение
С файлом работаю пока что только я. Ну да ладно, раз выбора особо нет, то попробую.
А система? А антивирус? ... ?
p51x на форуме Ответить с цитированием
Старый 15.12.2016, 13:31   #8
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А система? А антивирус? ... ?
Они лезут в прямое редактирование файлов?
demon31 вне форума Ответить с цитированием
Старый 15.12.2016, 13:53   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

В простейшем случае: при эксклюзивном доступе могут подождать. Более продвинутые с драйверами вполне могут следить и фильтровать запросы. А есть еще всякие руткиты и перехватчики функции...
Полагаться на то, что файл никто не трогает плохой вариант.
p51x на форуме Ответить с цитированием
Старый 15.12.2016, 14:09   #10
demon31
Пользователь
 
Регистрация: 17.05.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Полагаться на то, что файл никто не трогает плохой вариант.
WaitForSingleObject делает всё как надо, но работает это только на приложениях ...
demon31 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отследить разбегание Sashenka1 Общие вопросы Delphi 0 04.04.2016 16:40
Отследить ошибку LuxMi C# (си шарп) 5 01.02.2013 09:25
Отследить программу Михаил Юрьевич Общие вопросы Delphi 6 09.09.2012 17:06
Отследить проблему giarmul JavaScript, Ajax 0 09.08.2010 20:49
Отследить стринги san72 Общие вопросы Delphi 2 30.05.2009 17:40