Russian Qt Forum
Ноябрь 26, 2024, 01:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Проверка - открыт ли файл другим приложением [QT 4.6.0]
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проверка - открыт ли файл другим приложением [QT 4.6.0] (Прочитано 12707 раз)
jjoss
Гость
Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
:
Февраль 09, 2010, 19:49 »
Народ, есть ли в QT инструментарий для проверки того, открыт ли файл другим приложением?
Или всё таки, например, при разработке под Windows использовать API?
Записан
gigabyte
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #1 :
Февраль 09, 2010, 20:54 »
1.Если ты делаешь какую-то системную утилиту, то только с использованием API системы
2. Можешь воспользоваться методом который использует Ворд и ексель, создать временный lock-файл (правда у них это файл отката а не простой lock-файл) и потом проверяешь его наличие и принимаешь соответственное решение
Записан
jjoss
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #2 :
Февраль 09, 2010, 20:59 »
Цитата: gigabyte от Февраль 09, 2010, 20:54
1.Если ты делаешь какую-то системную утилиту, то только с использованием API системы
2. Можешь воспользоваться методом который использует Ворд и ексель, создать временный lock-файл (правда у них это файл отката а не простой lock-файл) и потом проверяешь его наличие и принимаешь соответственное решение
Задача, в общих чертах, состоит в следующем. Есть два сторонних приложения. Первое делает выгрузку данных из базы в файл. Второе отправляет выгруженный файл по почте и УДАЛЯЕТ его. Два действия - выгрузку и отправку - осуществляет пользователь. Задача заключается в том, что нужен робот, который должен отловить момент, когда выгрузка закончена и "забрать" файл.
Записан
BRE
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #3 :
Февраль 09, 2010, 21:06 »
Выгрузка происходит в файл с каким то специальным расширением, например upload. Когда все данные записаны в файл, он переименовывается.
Выгружается Файл готов к отправке
data1.txt.upload -> data.txt
Записан
jjoss
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #4 :
Февраль 09, 2010, 21:10 »
Цитата: BRE от Февраль 09, 2010, 21:06
Выгрузка происходит в файл с каким то специальным расширением, например upload. Когда все данные записаны в файл, он переименовывается.
Выгружается Файл готов к отправке
data1.txt.upload -> data.txt
Не получится. Выгружающая система написана давно и не мной. Исходников нет.
Записан
SimpleSunny
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #5 :
Февраль 09, 2010, 21:13 »
Если файла нет, а потом он начинает заполняться, то он открывается на запись и читать из него нельзя. Можно проверить наличие файла, а потом пытаться открыть на чтение с некой периодичностью.
Записан
BRE
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #6 :
Февраль 09, 2010, 21:15 »
Цитата: jjoss от Февраль 09, 2010, 21:10
Не получится. Выгружающая система написана давно и не мной. Исходников нет.
Написана давно, исходников нет..... платформа венда?
Записан
BRE
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #7 :
Февраль 09, 2010, 21:16 »
Цитата: SimpleSunny от Февраль 09, 2010, 21:13
Если файла нет, а потом он начинает заполняться, то он открывается на запись и читать из него нельзя. Можно проверить наличие файла, а потом пытаться открыть на чтение с некой периодичностью.
Тоже подумал использовать QFileSystemWatcher, только возможно что выгрузка идет с разными интервалами.
Записан
jjoss
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #8 :
Февраль 09, 2010, 21:17 »
Цитата: BRE от Февраль 09, 2010, 21:15
Цитата: jjoss от Февраль 09, 2010, 21:10
Не получится. Выгружающая система написана давно и не мной. Исходников нет.
Написана давно, исходников нет..... платформа венда?
Да, винда
Записан
jjoss
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #9 :
Февраль 09, 2010, 21:19 »
Цитата: SimpleSunny от Февраль 09, 2010, 21:13
Если файла нет, а потом он начинает заполняться, то он открывается на запись и читать из него нельзя. Можно проверить наличие файла, а потом пытаться открыть на чтение с некой периодичностью.
Так думал сначала. Но файл не блокируется при заполнении. Так, например, notepad работает - он не блокирует файл. Буду пробовать на основе этого реализовывать
http://wasm.ru/article.php?article=lockfileswork
. Но, чёт кажется, что есть более простой способ...
Записан
SimpleSunny
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #10 :
Февраль 09, 2010, 21:24 »
Более простого метода нет. А блокнот не блокирует, ибо записывает туда информацию только при желании пользователя. А если программа тупо получила информацию из БД и сразу ее записала в файл, то метод на открытие вполне жизнеспособный.
Записан
jjoss
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #11 :
Февраль 09, 2010, 21:37 »
Цитата: SimpleSunny от Февраль 09, 2010, 21:24
А если программа тупо получила информацию из БД и сразу ее записала в файл, то метод на открытие вполне жизнеспособный.
Пробовал - не пашет... Придётся заморачиваться с хэндлами
Всё равно всем спасибо!!!
Записан
gigabyte
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #12 :
Февраль 09, 2010, 21:50 »
сделай батник run.cmd:
myapp
copy result.txt upload.txt
сделай ярлык к нему и выставь на рабочий стол клыэнта
проверяй наличие файла upload.txt
Записан
BRE
Гость
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #13 :
Февраль 09, 2010, 21:51 »
Тогда проще клиента заставить руками отчеты отправлять.
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Проверка - открыт ли файл другим приложением [QT 4.6.0]
«
Ответ #14 :
Февраль 09, 2010, 21:52 »
Цитировать
Более простого метода нет. А блокнот не блокирует, ибо записывает туда информацию только при желании пользователя. А если программа тупо получила информацию из БД и сразу ее записала в файл, то метод на открытие вполне жизнеспособный.
Че то не верится в жизнеспособность этого метода где вероятность того что эта чужая программа выгрузки не работает также как вышеупомянутый "блокнот"? То есть работает со своим буфером по мере выгрузки а пишет периодически по таймеру переоткрывая/перезаписывая файл? Кроме того что в вашей фразе значит
Цитировать
сразу ее записала в файл
- как так сразу? может эта выгрузка час длиться будет на реальных данных...
Эта чужая программа выгрузки - отдельный запускаемый файл? Тогда можно запускать ее, ждать завершения и только потом отправлять выгрузку. Вы вроде сказали что пользователь определяет когда нужно выгрузить - пусть щелкает ярлык не программы выгрузки а батника в котором сначала программа выгрузки, а потом программа отправки данных....
Цитировать
Тогда проще клиента заставить руками отчеты отправлять.
Если для выгрузки какая-то спец программа используется - то возможно на той стороне как раз робот сидит и статистику собирает - а человеку сложно вручную будет такое отправлять...
«
Последнее редактирование: Февраль 09, 2010, 21:54 от break
»
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...