Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
1

Как узнать и прочитать файл до того как с ним начнет работать другая программа

17.05.2011, 18:40. Просмотров 777. Ответов 10
Метки нет (Все метки)

Здрувствуйте!
Подскажите пожалуйста, как я могу узнать и прочитать файл до того как с ним начнет работать другая программа. Например
пользователь хочет открыть некий документ, а мое приложение должно узнать какой документ собирается открыть пользователь и
прочитать его до того как с ним начнет работать Офис и тока потом Офис будет работать с ним.
думаю что что проще сделать через ВинАПИ, а в стандартных хуки не нашел решения.
пишу на с++ builder 2007.
Приму любые мысли и замечания !
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 18:40
Ответы с готовыми решениями:

Файл не удаляется после того, как отработала другая функция
Подскажите пожалуйста в чем проблема или как обойти это..... все нормально удаляет remove(...

Определить вероятность того, что двигатель начнет работать
Доброе времья суток помогите с задачей пожалуйста, При включении зажигания двигатель почнет работат...

Вычислить вероятность того, что двигатель начнет работать при втором выполнении стартера
При выполненные стартера двигатель авто начинает работать с вероятностью р=0,9. Вычислить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
kravam
быдлокодер
1716 / 903 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
17.05.2011, 18:46 2
А ты знаешь c помощью какого приложения пользователь собирается открыть документ?
0
Kastaneda
Jesus loves me
Эксперт С++
5061 / 3079 / 351
Регистрация: 12.12.2009
Сообщений: 7,789
Записей в блоге: 2
Завершенные тесты: 1
17.05.2011, 18:48 3
Ну да, нужно хук ставить, правда я не знаю какой именно, т.к. подобной проблемой не задавался. А вот по поводу чтения документов Office могу сказать, что это геморрой. Хотел недавно писать программу для работы с текстом в Word'е, почитав что к чему отказался от этой идеи, т.к. нужно было ковыряться с англоязычной документацией MS, а это того не стоило) Word - это не просто текстовый файл, это файл у которого своя внутренняя архитектура, которую MS еще и скрывает. В сети есть оффициальная документация для файлов Office 2007, для 2010 вроде как пока в секрете.
0
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
17.05.2011, 19:17  [ТС] 4
kravam
Да ! будет Office 2007 !

Kastaneda
Мне просто необходимо прочитать документ до того как Ворд откроет его и определить что Ворд закрылся, а там уже знаю что с ним делать =)
0
Kastaneda
Jesus loves me
Эксперт С++
5061 / 3079 / 351
Регистрация: 12.12.2009
Сообщений: 7,789
Записей в блоге: 2
Завершенные тесты: 1
17.05.2011, 19:24 5
Цитата Сообщение от godini Посмотреть сообщение
Мне просто необходимо прочитать документ до того как Ворд
Я копал в сторону поменять цвет текста, но вроде как даже просто прочитать текст - уже геморрой.

Добавлено через 1 минуту
Я про то, что банальное:
C++
1
2
ifstream is("Text.doc");
is>>mystring;
уже не сработает.
0
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
17.05.2011, 19:52  [ТС] 6
Ну в 2007 там сжатый ZIPом XML.

Вся фишка в том, что бы проследить за юзером что он хочет открыть и прочитать первым =)
как бы мысли есть, а вот точного пока ничего нет =(
0
kravam
быдлокодер
1716 / 903 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
17.05.2011, 19:56 7
Ну тогда тебе надо определить, с помощью какой именно API-функции Office 2007 открывает файл;
Это CreateFile или OpenFile, а то и обе вместе; может для открытия файла ещё какая есть, не знаю.
После чего пишешь прогу, осуществляющую перехват этих функций; то есть она должна в коде Office заменить участки, вызывающие вышеупомянутые функции на необходимый тебе код. То есть схема работы твоей проги такая:
1) Запускается цикл, который отслеживает все процессы в системе, как только находится нужный процесс (Office.exe или как его там)
2) Так сразу же исплоняется перехват API-функций
0
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
17.05.2011, 20:08  [ТС] 8
Да, да я думал об этом, и узнал многие методы перехвата API, но осуществляются они над запущенном процессом.
а как я понимаю для открытия документа сначала посылается сообщение на запуск Офиса и передача ему пути до документа как атрибут, но вот как узнать так оно или нет =)
0
kravam
быдлокодер
1716 / 903 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
17.05.2011, 20:16 9
Даже если это и так, то есть как бы там не посылалось имя файла офису- как параметр в командной строке или иным путём, офису не обойтись без функции открытия файла, я их назвал, хоть ты тресни. Вот и перехватывай их. Карауль и как только офис начнёт работать- перехватывай.
0
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
17.05.2011, 21:03  [ТС] 10
я тут уже ищу API монитор что бы уточнить чем же он там вызывается =)
нет ничего подходящего ?)
0
kravam
быдлокодер
1716 / 903 / 106
Регистрация: 04.06.2008
Сообщений: 5,589
17.05.2011, 21:47 11
Программа? Есть
http://www.softogrand.ru/69913-process-monitor-29.html
Не получится- говори, я тебе саму прогу скину.
0
17.05.2011, 21:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.