|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.12.2016, 20:17 | #1 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
Отследить закрытие
Добрый вечер, подскажите в таком вопросе.
Мне требуется открывать из программы файлы, но после того как с ними поработали, требуется отследить завершение работ и еще операции проделать из программы, но т.е. после того как файл закрыт уже. Но файлы абсолютно любые. Я сейчас использую ShellExecute, но он не позволяет отследить закрытие программы, или я такого не нашел. Я начал использовать CreateProcess со связью WaitForSingleObject, всё работает и отследить получается, НО он работает только для приложений, на файлах он начал выбивать ошибки, ко всему для него нужно статично прописывать пути, нежели как в первом варианте есть выбор программы по умолчанию, да и она сама тип файла определяет. Ну вот и вопрос, можно ли для ShellExecute отследить закрытие программы или файла, короче того что открыто будет. Или же как для CreateProcess сделать открытие всех файлов, может через что-то подобное open, чтобы тип файла или программа через которую надо открыть сама определялась или открывала окно предложения выбора. |
14.12.2016, 20:24 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Система может информировать об изменениях файла напрямую.
Ref: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx |
14.12.2016, 21:03 | #3 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
Даже не знаю нормально ли это будет работать, мне не важно каждое изменение, мне важно начало и конец, т.е. открытие и закрытие файла. А тут как я понял может быть такое, что отследит изменение в процессе работы т.е. я например сохраню, но не закрою, тогда вся моя конструкция сломается.
|
15.12.2016, 09:19 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Ваша конструкция в принципе шаткая, поскольку даже если получите сигнал закрытия, то пока вы займетесь файлом его может открыть ктото другой...
Получив сигнал изменения файла открывайте файл в ексклюзивном режиме. Если получится, значит никто другой в файл писать пока не будет - либо файл больше не открыт, либо открыт в режиме чтения, что по сути тоже самое. Если вам нужно обязательно знать когда файл закрыт - пишите драйвер, но это не решит проблемы, о которой я упомянул выше. |
15.12.2016, 10:45 | #5 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
|
15.12.2016, 12:51 | #6 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
Да не, всё как я и сказал, я собрал данную штуковину. Изменение отслеживается при сохранение, то есть, уже не совсем то что нужно. Если я при первом же сохранение сделаю какие-то изменения, то всё сломается, а файл не был закрыл, его просто сохранили. И ЕЩЕ прям конкретный косяк, а как мне экзешники и просто программы отслеживать таким способом?!
|
15.12.2016, 13:22 | #7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
|
15.12.2016, 13:31 | #8 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
|
15.12.2016, 13:53 | #9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
В простейшем случае: при эксклюзивном доступе могут подождать. Более продвинутые с драйверами вполне могут следить и фильтровать запросы. А есть еще всякие руткиты и перехватчики функции...
Полагаться на то, что файл никто не трогает плохой вариант. |
15.12.2016, 14:09 | #10 |
Пользователь
Регистрация: 17.05.2015
Сообщений: 28
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
отследить разбегание | 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 |