Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение данных в стороннем редакторе, изменить и сохранить данные из базы 
:(
    Опции темы
AlexPro
Дата 31.1.2013, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Задача следующая: в таблице базы данных хранятся данные файлов различных форматов (.doc, .xls, .jpg и т.д.) в blob-полях. Необходимо извлечь данные, открыть в соответствующем редакторе и, в случае изменения данных, сохранить их в базе. Манипуляции с базой затруднений не вызывают. Скажем, я извлекаю данные, сохраняю во временный файл и открываю через ShellExecute. Нужно отловить момент закрытия программы-редактора, а также, был ли файл изменен. Можно это сделать каким-нибудь кошерным способом?
PM MAIL   Вверх
volatile
Дата 31.1.2013, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 4
Всего: 85



Можно например так:

1. выделяем для этой цели отдельный поток.
2. сохраняем временный файл, запоминаем время последней модификации оного.
3. вызываем ShellExecuteEx (там есть hProcess)
4. ждем завершения по WaitForSingleObject(hProcess, INFINITE);
5. сверяем время последней модификации файла, если изменилось то обновляем базу.
6. завершаем поток.

PM MAIL   Вверх
AlexPro
Дата 31.1.2013, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



volatile,  спасибо за подсказку. Похоже, это то, что надо. Буду пробовать. Однако, чувствую нужду сначала пообщаться с товарищем Рихтером. smile 

PM MAIL   Вверх
AlexPro
Дата 4.2.2013, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Реализовал (правда, пока без создания отдельного потока). Все прекрасно работает под XP. На 7-ке студия (2008-я SP1) стреляется без объяснения причин при повторном открытии файла (любого, не обязательно того же, что и в первом случае).
Проверил из-под VS2010 и VS2012. Замечательно работает. exe-шник, сгенерированный VS2008, тоже работает без проблем... Ну, будем считать проблемой совместимости VS2008 и Windows 7.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.