|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.08.2008, 12:04 | #1 |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
|
Можно ли после аварийного закрытия приложения внести/удалить запись из файла
Подскажите пожалуйста.
Суть такая. Приложение ведет сетевой лог. Программу закрываешь запись из лога удаляется, но если аварийно закрыть прогу через ctrl alt delete запись в логе остается. Можно ли как то убирать ее или это не реал?
I like beer.. more beer..
|
04.08.2008, 16:10 | #2 |
Участник клуба
Регистрация: 28.11.2007
Сообщений: 1,521
|
На мой взгляд будет самый простой способ написать маленькую программку, которая следила бы за первой программой и при завершении первой программы удаляла запись из лога.
Всегда рад помочь!
|
04.08.2008, 16:50 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А что Лог этот жутко мешает?
I'm learning to live...
|
04.08.2008, 17:46 | #4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,637
|
Логи можно почистить при следующем запуске этой программы.
E-Mail: arigato.freelance@gmail.com
|
05.08.2008, 14:13 | #5 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
В принципе это реально. Terran уже сказал как это можно сделать.
Многие программы определяют свое аварийное завершение и предлагают перезапустить (автоматически) или отправить отчет. Сами они, понятно, этого сделать не могут, значит нужен процесс к-рый будет следить "со стороны".
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
05.08.2008, 16:23 | #6 |
Пользователь
Регистрация: 30.07.2008
Сообщений: 14
|
Ctrl-alt-delete - не единственный способ завершения программы внешними средствами.
1. Для обработки штатного завершения - обработать WM_CLOSE и WM_SYSCOMMAND c SC_CLOSE в главном окне программы (дельфи делает это сама). 2. Для обработки вызова ExitProcess - добавить динамическую библиотеку к проекту, и в ней обработать DLL_PROCESS_DETACH. 3. Для обработки вызова TerminateProcess - установить хук на вызов TerminateProcess в менеджер задач (в частности) путем внедрения библиотеки. 4. Для обработки завершения из-за ошибки времени исполнения - использовать SetWindowsHookEx. Как предложено terran-ом, проще написать следящую программу, однако она также может быть завершена из менеджера задач. Правильнее было бы понять, для чего используется эта запись в логе, чтобы выбрать верное решение. |
05.08.2008, 16:32 | #7 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Прежде чем продать что- то ненужное, надо купить что- то ненужное (c)
если вам надо удалить строку из лога при выходе из программы, то на 90% это строка пишется в лог невовремя. Скорее всего это алгоритмическая ошибка.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
06.08.2008, 08:44 | #8 |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
|
Ну во первых большое спасибо что обратили внимание.
Объясню немного суть самой проги. В программе есть несколько групп пользователей: админы и просто юзеры. Программа лежит сама на серваке. Я занимаюсь разработкой новых версий этой программы. И вот в процесс когда мне нужно заменить версию проги на новую всегда возникают проблемы, из-за того что кто-нибудь вечно в ней сидит, а зачастую бывает даже так что юзер запустит прогу и свалит домой. Естесственно я могу к некоторым зайти через радмин и кильнуть сессию, однако политика моих прав распространяется не на все компьютеры пользователей, для чего я создал монитор пользователей который ведет лог, в котором отображаются нужные мне данные о юзере. И тогда я могу делать следующее: 1) заходить через радмин по айпи и килять. 2) если не моя зона прав звонить сисадмину и килять 3) отправлять по почте мессагу. И 4, а 4 это есть следующее (что я сейчас и делаю): я кидаю в файл на серве команду, программа считывает команду и закрывает ее. И вот для всех этих манипуляций мне и нужен нормальный монитор. Проблему ctrl alt delete я в принципе победил. Определенный промежуток времени программа в логе затирает инфу на более новую, и если промежуток времени между сеансами стал критичным.. то в мониторе отобразится инфа о прерывании..
I like beer.. more beer..
Последний раз редактировалось Ramires; 06.08.2008 в 08:47. |
06.08.2008, 09:37 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я бы подумал над двумя вариантами:
1. Прога сама в ДЛЛ находится (ядро) Когда приходит новая версия exeшник выдает сообщение пользователю - мол обнови. если пользователь кликает ДА то прога качает себе в особую папку на хост ДЛЛ и перезагружает (или просто закрывается) 2. Этот вариант использую я сам. Прога прогой, но новую версию я и называю по другому. Старая даже если работает - ее дни сочтены. А все потому что я пользуюсь методом двойных ярлыков. Тут все просто Я кладу Экзешник на сервак, делаю на него линк, и делаю Линк на этот линк. Второй линк раскидываю по хостам. Таким образом дабы заменить прогу мне просто нужно подправить в первом линке имя файла, автоматом при следующем запуске линк на хостах обратится к поправленному линку, который и запустит обновку )
I'm learning to live...
|
06.08.2008, 10:38 | #10 |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
|
Stilet, ты по праву Заслуженный Модератор! Спасибо большущее!
Второй метод супер!
I like beer.. more beer..
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли внести изменения в файл с расширением .exe | Sanlev | Помощь студентам | 12 | 08.02.2010 15:49 |
запись в файл при закрытии в приложения | SERG1980 | Общие вопросы Delphi | 5 | 14.11.2007 08:08 |
Как сделать чтобы динамически созданные объекты оставались после закрытия формы? | AHAPXUCT2007 | Общие вопросы Delphi | 7 | 28.09.2007 08:46 |
ошибка, после того как я создал запись 'fayl' | ZhekON | Общие вопросы Delphi | 15 | 01.04.2007 13:39 |
как удалить нужную запись из БД | doncova1 | БД в Delphi | 4 | 20.12.2006 23:35 |