Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
#1

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

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

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

Как передать файл в класс, и работать там с ним? - C++
Добрый день, у меня есть программа ,её надо реализовать через классы. Я работаю с фракталом Мандельброта. Программа рисует...

CGraphView... Как с ним работать. - C++
Подскажите пожалуйста, как работать с классом CGraphView. Очень надо. Может кто-то станкивался... Как нарисовать хотя-бы простейший...

CTabCtrl - как с ним работать? - C++
Попытался разобраться с этим компонентом, да застрял. Задачка: разместить на разных вкладках объекта различные компоненты (скорее всего,...

STL STACK как с ним работать? - C++
задача такова: 1. Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными, тип которых определяется...

PlayGround SDK как работать с ним? - C++
Есть инсталяха PlayGround SDK. Установил его, а что дальше делать не знаю. Документацию читаю на английском так там сходу какие-то примеры...

Что такое Snippet и как с ним работать? - C++
Скажите пожалуйста , что это и зачем . Если можно ссылку , не могу найти подробного объяснения =(

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
17.05.2011, 18:46 #2
А ты знаешь c помощью какого приложения пользователь собирается открыть документ?
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 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
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 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
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
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
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
17.05.2011, 20:16 #9
Даже если это и так, то есть как бы там не посылалось имя файла офису- как параметр в командной строке или иным путём, офису не обойтись без функции открытия файла, я их назвал, хоть ты тресни. Вот и перехватывай их. Карауль и как только офис начнёт работать- перехватывай.
0
godini
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 5
17.05.2011, 21:03  [ТС] #10
я тут уже ищу API монитор что бы уточнить чем же он там вызывается =)
нет ничего подходящего ?)
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
17.05.2011, 21:47 #11
Программа? Есть
http://www.softogrand.ru/69913-process-monitor-29.html
Не получится- говори, я тебе саму прогу скину.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 21:47
Привет! Вот еще темы с ответами:

Что такое SDK и как с ним работать? - C++
1) что такое вообще SDK для IP камер: что-то вроде получение доступа (полномочий) к настройкам или какое-то ПО для получения этого доступа...

Как сохранить контейнеры STL в файл. И как потом их прочитать из файла - C++
В Qt такой контейнер как map<T,T> библиотеки STL заносится в файл занесением в поток "<<map;" , а как это можно сделать в C++ BUILDER6.0...

Как прочитать корневую директорию, как файл в hex-ввиде? - C++
Файл можно открыть так: #include <iostream> #include <cstdio> int main() { FILE * ptrFile = fopen("G:\filename.txt",...

Одна программа записывает данные в файл, а другая их считывает и выводит на экран - C++
Задача состоит в том чтоб одна программа записала данные в файл а другая их считала и вывела на экран как полагается, запись и считывание...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.05.2011, 21:47
Ответ Создать тему
Опции темы

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