Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

icq: 216409213
По умолчанию

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

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

icq: 216409213
По умолчанию

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отследить разбегание Sashenka1 Общие вопросы Delphi 0 04.04.2016 17: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




16:44.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


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

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru