![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| MakedoneZ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 22.12.2006 Где: Азербайджан,солне чный Баку Репутация: нет Всего: нет |
При нажатии на мои файлы,выскакивает прога,запрашивает ключ шифра,расшифровывает файл.
Далее мне надо,чтоб при закрытии файла,он заново зашифровывался. Т.е. надо чтоб прога "ждала" закрытия файла,а затем начала шифровку. Но проверять постоянно таймером,открыт ли файл это не то. Можно ли как-нибудь моему приложению получить сообщение от ОС,что конкретный файл был только что закрыт? Если да,то как? Если можно,приведите прожалуйста примитивный пример. Спасибо... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
ОС не посылает никаких сообщений при "закрытии" файла, AFAIK.
кто файл открывает? жди завершения процесса, что этот файл открыл. других вариантов в голову не приходит. Это сообщение отредактировал(а) MetalFan - 22.1.2007, 11:09 -------------------- There are always someone smarter than you... |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Как это расшифровывается? sokr.ru ничего не находит. MakedoneZ, что понимаешь под "закрытием файла"? Что значит файл "закрыт"???? Опиши подетальнее свою прогу, ибо понять тебя невозможно. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
имхо лучше делать это в памяти , открыл файл , записал в память , расшифровал, поработал , зашифровал , сохранил в файл
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Sunvas, AFAIK - As Far As I Know (на сколько я знаю)
Romikgy, поиграем в телепатов. я понял, что автору надо открыть другое приложение в котором должен открыться уже расшифрованный файл... Это сообщение отредактировал(а) MetalFan - 22.1.2007, 13:30 -------------------- There are always someone smarter than you... |
|||
|
||||
| MakedoneZ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 22.12.2006 Где: Азербайджан,солне чный Баку Репутация: нет Всего: нет |
У меня программа шифровки файлов.
1)Файл шифруется 2)В конец файла вписываются данные о том,какое у него было расширение + номер алгоритма из крипто-библиотеки. 3)Т.к. файл теперь имеет "мое" расширение,то при его открытии запускается моя прога. (естественно мое расширение зарегистрировано в реестре,со всеми нужными данными). 4)При открытии файла защищенного моей программой,выскакивает InputBox,который предлагает ввести ключ шифра. 5)Из файла вынимаются первичные данные о его истинном расширении + об алгоритме шифровки. С учетом ключа файл расшифровывается соответствующим алгоритмом.Этот файл запускается при помощи ShellExecute.И юзер с ним работает,возможно вносит изменения. 6)Моя программа,которая расшифровала файл при его открытии юзером,тихо сидит и ожидает его закрытия. 7)Как только поступает сигнал о том,что юзер закрыл этот файл,она начинает в тихом режиме зашифровывать его обратно.Затем закрывается. Иными словами,файл остается расшифрованным лишь в момент его работы с юзером у которого есть ключ.Функция шифрования построена так,что она берет данные из одного потока,а зашифрованные данные помещает в другой.В данном случае данные берутся из TFileStream,пишутся в TMemoryStream. Чтоб не повредить файл,в случае,если вдруг во время расшифровки произойдет ошибка. А иначе получится что часть файла зашифрована,а чать - открытый текст. Также осуществляется проверка целостности и прочее,прочее,но это все не имеет отношения к моему вопросу.Я лишь постарался как можно обширнее описать все. И вот мой вопрос: Прочитайте пункт 6. Как мне получить сообщение о том,что открытый и расшифрованный файл был только что закрыт.Что работа с ним юзером преостановлена. Добавлено @ 14:17 Я хочу узнать когда закрылся ЧУЖОЙ файл,открытый МОЕЙ прогой,чтоб зашифровать его заново. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
WaitForSingleObject+INFINITE -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
MakedoneZ,
можно, например, перехватить CreateFile и CloseHandle, "отловить" хэндл твоего файла, и ждать пока он приплывет в CloseHandle(возможны "косяки", если открывающая программа будет пользовать всякие ReOpenFile/DuplicateHandle)... но imho в данном случае таймер - самое оно. |
|||
|
||||
| MakedoneZ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 22.12.2006 Где: Азербайджан,солне чный Баку Репутация: нет Всего: нет |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
||||
|
||||
| MakedoneZ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 22.12.2006 Где: Азербайджан,солне чный Баку Репутация: нет Всего: нет |
Все же реализовал этим способом:
Всем спасибо за помощь. Это сообщение отредактировал(а) MakedoneZ - 23.1.2007, 14:34 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
вообще, метод "кривой", потому что "закрытие файла" != "закрытие приложения". я могу закрыть файл и продолжать работу в ворде. потом, ты проверял что будет, если приложение уже открыто до того, как ты его запустишь со своим файлом?
если ты пишешь только для себя, то "и так сойдет"... в противном случае купи каску. |
|||
|
||||
| Sansa |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 18.10.2006 Где: Королев Репутация: 3 Всего: 6 |
Ну, можно проверять сам файл, например попытками открыть его с Share Deny Read в цикле (потоке). И при успешном открытии предполагаем, что приложение уже "отпустило" файл.
Но мне кажется, что надежнее будет перехватывать системные функции, как это делают вирусы и антивирусы. Но тохда есть шанс, что прогу покиляют те же антивирусы по подозрению в саботаже. --------------------
- Здравствуйте, я Ваш патологоанатом |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |