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

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

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

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

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

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

мониторинг действий пользователя - C++
Помогите пожалуйста написать программу мониторинг действий пользователя.Или хотя б код проги скиньте. Задачи. 1) Список запуска...

Мониторинг HTTP трафика - C++
Всем здарова, возникла надобность мониторить http трафик и я так понимаю что для этого нужно слушать порты 80 и 8080, как это можно...

Мониторинг оборудования. Снизить интервалы опроса - C++
Есть программа, которая работает с ком-портом. Постоянно мониторит оборудование, то есть работает по принципу клиент-сервер. Данные...

Мониторинг ошибок в Visual Studio 2013 - C++
Есть какой нибудь аддон на Visual Studio позволяющий расширить мониторинг ошибок? То есть, чтобы если при сборке проекта была ошибка, он...

Мониторинг каталога на предмет изменения содержимого - C++
Нужно написать функция (или подпрограмму) которая мониторит каталог. Если какой либо файл в каталоге изменился (поменялся размер,...

Написать самую простую программу, которая выводит системные драйвера и их параметры (мониторинг драйверов) - C++
Добрый день. Подскажите, пожалуйста, как написать самую простую программу, которая выводит системные драйвера и их параметры?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
12.07.2012, 19:06
  #2

Не по теме:

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

0
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();
         ........
}
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,672
Записей в блоге: 17
12.07.2012, 19:19 #4
1. Тип файла?
2. В какой программе будет открываться файл пользователем?
0
Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:21  [ТС] #5
.MPQ архив, открыт может быть чем угодно.
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.07.2012, 19:26 #6
Mindz, посмотри в сторону FindFirstChangeNotification, тут есть код http://www.cyberforum.ru/visual-cpp/...ml#post2008026
(правда он немного другие цели приследовал)
0
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 19:32 #7
у меня похожее...
Вот есть файл текстовый. Нужно считать пробелы и выводить их текущее количество по запросу, а файл еще пишется. Если же файл перестает редактироваться, нужно вывести итог и завершиться.
Поправка: файл редактируется пользователем из вне.
0
Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:35  [ТС] #8
Что значит пишется?
Чем он у вас пишется инородной программой?
0
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 19:37 #9
да, инородной. не моей.
0
Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 19:45  [ТС] #10
Шас почитаю литературку,придумаем что нить.

Добавлено через 6 минут
рожать надо в эту сторону FILE_NOTIFY_CHANGE_SIZE
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,672
Записей в блоге: 17
12.07.2012, 20:00 #11
.MPQ архив, открыт может быть чем угодно.
Думаю задача не реализуема...
Т.е. некоторые программы не блокирую открываемые ими файлы, а некоторые блокируют и тут облом.

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

Добавлено через 5 минут
рожать надо в эту сторону FILE_NOTIFY_CHANGE_SIZE
А что при открытии файла его размер меняется?
0
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 минут
Файл то меняется но вот вопрос как?Скорее всего данная функция не поможет.
0
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
12.07.2012, 20:34 #13
А винда по этому поводу случайно никаких сообщений не кидает?
0
Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
12.07.2012, 20:38  [ТС] #14
Да вроде нет,шас вот эту статью читаю,скорее всего она поможет решить проблему http://wasm.ru/article.php?article=lockfileswork
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 20:38
Привет! Вот еще темы с ответами:

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла - C++
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

Мониторинг файла - C Linux
Добрый день. Может кто подскажет - есть контроллер под Linux ARM У него одна из лап заведена на шину прерывания. Состоянию этой...

Мониторинг наличия файла - C#
Здравствуйте! необходимо организовать консольное приложение, которое осуществляет мониторинг наличия файла. Есть код котрый осуществляет...

Постоянный мониторинг файла - PHP
Добрый день. С php мало знаком, потому пишу на коленке. Целью является при возникновении определенного события перезаписать нужную строку в...


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

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

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