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

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

Войти
Регистрация
Восстановить пароль
 
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
#1

Мониторинг файла? - C++

12.07.2012, 18:49. Просмотров 606. Ответов 13
Метки нет (Все метки)

Здравствуйте, возникла некоторая проблема в создание программы которая бы выполняла некоторые операции с информацией файла,но при условие того что он открыт пользователем в момент работы программы.Выполняется в ОС Windows.
Не мог бы кто поделится соображениями по этому поводу,был бы весьма благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2012, 18:49     Мониторинг файла?
Посмотрите здесь:

C++ Перебор файла посимвольно, как организовать цикл, работающий до конца файла.
C++ мониторинг действий пользователя
Удвоить размер файла, записав в конец файла все его исходные элементы C++
C++ Написать программу записи содержимого из одного файла в другой : Тип файла текстовый
C++ Мониторинг каталога на предмет изменения содержимого
Написать программу по разбивке и анализу содержимого файла отчета работы ПО (log-файла) C++
C++ Мониторинг ошибок в Visual Studio 2013
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
12.07.2012, 19:06
  #2

Не по теме:

Mindz, твоё задание настолько же пространно как если бы попросить рассказать о перспективах квантовой телепортации функции состяния атомов гелия. Конкретно напиши что за файл и что с ним хочешь делать?

Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:14  [ТС]     Мониторинг файла? #3
Не думал что квантовая механика,может вызвать столь бурную аналогию.
Программа производит операцию считывания даты изменения файла,после чего проходить еше много процессов но суть их одна,они должны выполнятся при условие того что просматриваемый файл открыт пользователем в данный момент( в момент работы программы, то есть программа автоматом мониторит процесс).
вот такое не прокатит
C++
1
2
3
4
5
6
ifstream File("File.dat");
 
while( File.is_open() ) {
         someFunction();
         ........
}
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,903
Записей в блоге: 17
12.07.2012, 19:19     Мониторинг файла? #4
1. Тип файла?
2. В какой программе будет открываться файл пользователем?
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:21  [ТС]     Мониторинг файла? #5
.MPQ архив, открыт может быть чем угодно.
-=ЮрА=-
Заблокирован
Автор FAQ
12.07.2012, 19:26     Мониторинг файла? #6
Mindz, посмотри в сторону FindFirstChangeNotification, тут есть код http://www.cyberforum.ru/visual-cpp/...ml#post2008026
(правда он немного другие цели приследовал)
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 19:32     Мониторинг файла? #7
у меня похожее...
Вот есть файл текстовый. Нужно считать пробелы и выводить их текущее количество по запросу, а файл еще пишется. Если же файл перестает редактироваться, нужно вывести итог и завершиться.
Поправка: файл редактируется пользователем из вне.
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:35  [ТС]     Мониторинг файла? #8
Что значит пишется?
Чем он у вас пишется инородной программой?
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 19:37     Мониторинг файла? #9
да, инородной. не моей.
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:45  [ТС]     Мониторинг файла? #10
Шас почитаю литературку,придумаем что нить.

Добавлено через 6 минут
рожать надо в эту сторону FILE_NOTIFY_CHANGE_SIZE
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,903
Записей в блоге: 17
12.07.2012, 20:00     Мониторинг файла? #11
.MPQ архив, открыт может быть чем угодно.
Думаю задача не реализуема...
Т.е. некоторые программы не блокирую открываемые ими файлы, а некоторые блокируют и тут облом.

Но честно говоря я плохо понимаю что именно требуется? что реализовано? и с чем проблемы?

Добавлено через 5 минут
рожать надо в эту сторону FILE_NOTIFY_CHANGE_SIZE
А что при открытии файла его размер меняется?
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 20:09  [ТС]     Мониторинг файла? #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <windows.h>
 
 
void setRevision();
void setDate( const char* );
void getFile( const char* );
 
int Revision = 0, Date = 0;
 
using namespace std;
 
int main( int argc, char *argv[] )
{   
    system("COLOR E");
    system("TITLE Revision Maker v 1.0.0");
    
    char Path[100], exit, change;
    
     cout << "\2" << endl;
            
    do {   
        cout << "\nInput your file name (file.dat):";
        cin >> Path;
        
        fstream File( Path );
        
        if( !File.is_open() ) {
            cout << "Wrong Path to directory file!" << endl;
            break;
        }
        
        while(ВОТ сюда надо впихнуть условие при котором проверяется открыт ли сейчас файл пользователем ) {
                 setDate( Path );
                 getFile( Path );
        }
        cout << "Revision: " << Revision << endl
             << "FileName:" << Path << endl;
             << "\nTo finish a program runtime?(Y\N):" << endl;
        cin >> exit;     
    } while( exit != "Y" || exit != "y" );
    
    cout << "bye, i see you later dev :)";
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
void setDate( const char* file )
{
    struct _stat st;
    
    _stat( file, &st );
    
    Date = st.st_mtime;
}
 
 
void setRevision()
{ 
    Revision++;
}
 
void getFile( const char* name )
{
    int buff_revision, buff_date;
     
    fstream Revision_File( "Revision.ini" );
    
    if( !Revision_File.is_open() ) {
        ofstream New_File( "Revision.ini" );
        New_File << "[Information]" << endl
                 << "Revision=" << Revision << endl
                 << "Date=" << Date << endl
                 << "File=" << name << endl;
    } else {
            buff_revision = GetPrivateProfileInt(
                                                 "Information",
                                                 "Revision",
                                                 0,
                                                 "C:\\Dev-Cpp\\Projects\\RevisionMaker\\Revision.ini" 
                                                );
            buff_date = GetPrivateProfileInt(
                                             "Information",
                                             "Date",
                                             0,
                                             "C:\\Dev-Cpp\\Projects\\RevisionMaker\\Revision.ini" 
                                            );
            Revision = buff_revision;                                                    
            if( buff_date < Date ) {
                setRevision();
                Revision_File << "[Information]" << endl
                              << "Revision=" << Revision << endl
                              << "Date=" << Date << endl
                              << "File=" << name << endl;                          
            }           
      }
      Revision_File.close();         
}
Добавлено через 7 минут
Файл то меняется но вот вопрос как?Скорее всего данная функция не поможет.
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 20:34     Мониторинг файла? #13
А винда по этому поводу случайно никаких сообщений не кидает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 20:38     Мониторинг файла?
Еще ссылки по теме:

C++ Мониторинг HTTP трафика
Получение атрибутов файла (а именно дату создания файла) без WinApi C++
C++ Как, прочитав из файла один символ, выявить факт окончания файла
C++ Написать самую простую программу, которая выводит системные драйвера и их параметры (мониторинг драйверов)
Нужно считать с файла определенное число символов и эти символы удалить из файла C++

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

Или воспользуйтесь поиском по форуму:
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 20:38  [ТС]     Мониторинг файла? #14
Да вроде нет,шас вот эту статью читаю,скорее всего она поможет решить проблему http://wasm.ru/article.php?article=lockfileswork
Yandex
Объявления
12.07.2012, 20:38     Мониторинг файла?
Ответ Создать тему
Опции темы

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