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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
#1

MS VC++ WinApi32 - C++

15.02.2011, 17:42. Просмотров 1397. Ответов 11
Метки нет (Все метки)

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
// win_api.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    WIN32_FIND_DATA wf;
    HANDLE FF;
    FILETIME gettime;
    SYSTEMTIME systime;
    GetLocalTime(&systime);
 
    TCHAR dir[] = _T("D:/tasm//*.LST");
    FF = FindFirstFile(dir,&wf);
    gettime = wf.ftLastWriteTime;
     if (FF == INVALID_HANDLE_VALUE) 
   {
      cout << "FindFirstFile failed: " << GetLastError() << "\n";
   } 
   else 
   {
      cout << "The first file found is:" << wf.cFileName << "\n";
   }
    system("pause");
    
}
в общем я ищу файл по шаблону и должен его вывести на экран его имя, если дата редактирования меньше чем заданая... вопрос, как мне сконвертировать дату редактирования, во что-то с чем можно было бы сравнивать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 17:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос MS VC++ WinApi32 (C++):

Командная строка. WinAPI32 - C++ WinAPI
Добрый день! Приведите пример ввода данных в командной строке, более 1-го данного, и распознавания данных в WinMain. ...

Создать окно WINAPI32 - C++ WinAPI
Помогите написать программу. Создать главное окно с пиктограммой , с областью заголовка, рамкой и с системным меню: “Каталоги”,...

WinAPI32 - в окне с сообщением выводятся иероглифы - C (СИ)
Читаю книжку по WinAPI32, в книжке приведен листинг простейшей программы: #include &lt;windows.h&gt; #define UNICODE int APIENTRY...

Значения констант или где скачать полную версию WinAPI32.txt? - Visual Basic
Дело в том, что в помощи я читаю о константе, а в Api Viewer'е ее нет. Вот эти константы: SPI_GETACTIVEWINDOWTRACKING ...

Создание приложений работающих с многопоточными файлами системы NTFS с использованием winAPI32 для python - Python
Здравствуйте! Я пытаюсь перевести код с c++ на python. В последней строке ошибка - syntax error. - именно функции WriteFile - но именно в...

Командная строка. WinAPI32 - C++ WinAPI
Добрый день! Приведите пример ввода данных в командной строке, более 1-го данного, и распознавания данных в WinMain. ...

Создать окно WINAPI32 - C++ WinAPI
Помогите написать программу. Создать главное окно с пиктограммой , с областью заголовка, рамкой и с системным меню: “Каталоги”,...

WinAPI32 - в окне с сообщением выводятся иероглифы - C (СИ)
Читаю книжку по WinAPI32, в книжке приведен листинг простейшей программы: #include &lt;windows.h&gt; #define UNICODE int APIENTRY...

Значения констант или где скачать полную версию WinAPI32.txt? - Visual Basic
Дело в том, что в помощи я читаю о константе, а в Api Viewer'е ее нет. Вот эти константы: SPI_GETACTIVEWINDOWTRACKING ...

Создание приложений работающих с многопоточными файлами системы NTFS с использованием winAPI32 для python - Python
Здравствуйте! Я пытаюсь перевести код с c++ на python. В последней строке ошибка - syntax error. - именно функции WriteFile - но именно в...

Командная строка. WinAPI32 - C++ WinAPI
Добрый день! Приведите пример ввода данных в командной строке, более 1-го данного, и распознавания данных в WinMain. ...

Создать окно WINAPI32 - C++ WinAPI
Помогите написать программу. Создать главное окно с пиктограммой , с областью заголовка, рамкой и с системным меню: “Каталоги”,...

WinAPI32 - в окне с сообщением выводятся иероглифы - C (СИ)
Читаю книжку по WinAPI32, в книжке приведен листинг простейшей программы: #include &lt;windows.h&gt; #define UNICODE int APIENTRY...

Значения констант или где скачать полную версию WinAPI32.txt? - Visual Basic
Дело в том, что в помощи я читаю о константе, а в Api Viewer'е ее нет. Вот эти константы: SPI_GETACTIVEWINDOWTRACKING ...

Создание приложений работающих с многопоточными файлами системы NTFS с использованием winAPI32 для python - Python
Здравствуйте! Я пытаюсь перевести код с c++ на python. В последней строке ошибка - syntax error. - именно функции WriteFile - но именно в...

Командная строка. WinAPI32 - C++ WinAPI
Добрый день! Приведите пример ввода данных в командной строке, более 1-го данного, и распознавания данных в WinMain. ...

Командная строка. WinAPI32 - C++ WinAPI
Добрый день! Приведите пример ввода данных в командной строке, более 1-го данного, и распознавания данных в WinMain. ...

Создать окно WINAPI32 - C++ WinAPI
Помогите написать программу. Создать главное окно с пиктограммой , с областью заголовка, рамкой и с системным меню: “Каталоги”,...

WinAPI32 - в окне с сообщением выводятся иероглифы - C (СИ)
Читаю книжку по WinAPI32, в книжке приведен листинг простейшей программы: #include &lt;windows.h&gt; #define UNICODE int APIENTRY...

Значения констант или где скачать полную версию WinAPI32.txt? - VB
Дело в том, что в помощи я читаю о константе, а в Api Viewer'е ее нет. Вот эти константы: SPI_GETACTIVEWINDOWTRACKING ...

Создание приложений работающих с многопоточными файлами системы NTFS с использованием winAPI32 для python - Python
Здравствуйте! Я пытаюсь перевести код с c++ на python. В последней строке ошибка - syntax error. - именно функции WriteFile - но именно в...


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

Или воспользуйтесь поиском по форуму:
11
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.02.2011, 17:56 #2
FileTimeToLocalFileTime - может помочь.
А там ну ты и сравнивай обычным значком >\<.
ТаймФормат он и в Африке такой же.
1фиг в Винде время будет в формате секунд от 1го января 1970го, если я не ошибаюсь.
И учти, что ГетЛокалТайм заносит данные в структуру, так что... либо пользуй другую функцию, либо раскидывай то или иное время в общий формат. А это деление\умножение на год\месяц\день\час\минута\секунда
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 17:56  [ТС] #3
временно потерто, ушел тестить.
0
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 18:02  [ТС] #4
сделал так... ничего =\
C++
1
2
gettime = wf.ftLastWriteTime;
    FileTimeToLocalFileTime(&gettime,&loctime);
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.02.2011, 18:05 #5
Эта функция для приведения времени, записанного в файле, к часовому поясу твоего локального времени. К примеру твое время и время по Гринвичу различны...
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 18:09  [ТС] #6
Цитата Сообщение от zulkis Посмотреть сообщение
Эта функция для синхронизации твоего времени и времени, записанного в файле. К примеру твое время и время по Гринвичу различны...
тогда вопрос по другому...
вот я нашел файл, получил его атрибуты, среди которых время последнего редактирования.
Далее у меня есть какая-то переменная(вопрос еще, как туда правильно записать с какой датой сравнивать?), и как сравнить этот атрибут с переменной?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.02.2011, 18:10 #7
Вот тебе хороший пример, самый простой способ получения времени.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <time.h>
 
int main ()
{
  time_t seconds;
 
  seconds = time (NULL);
  printf ("%ld hours since January 1, 1970", seconds/3600);
  
  return 0;
}
upd1. ща, гляну я твою программулину.
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 18:17  [ТС] #8
Цитата Сообщение от zulkis Посмотреть сообщение
Вот тебе хороший пример, самый простой способ получения времени.
ща, гляну я твою программулину.
у меня там только каркас...

p/s/ я первый раз работаю с WinApi, 5ый с С++, так что не ругайте если что
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.02.2011, 18:21 #9
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
#include <Windows.h>
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
        WIN32_FIND_DATA wf;
        HANDLE FF;
        FILETIME gettime;
        SYSTEMTIME systime,yourfiletime;
        GetLocalTime(&systime);
        
 
        char dir[] = "D:/tasm//*.LST";
        FF = FindFirstFile(dir,&wf);
        gettime = wf.ftLastWriteTime;
        FileTimeToSystemTime(&gettime,&yourfiletime);
        cout << "system millisec:" <<systime.wMilliseconds << " File millisec: " << localsystemtime.wMilliseconds << endl;
 
         if (FF == INVALID_HANDLE_VALUE) 
   {
      cout << "FindFirstFile failed: " << GetLastError() << "\n";
   } 
   else 
   {
      cout << "The first file found is:" << wf.cFileName << "\n";
   }
        system("pause");
        
}
Разберешься ? сравнивай systemtime и yourfiletime.
Они являются структурами. Внутри - год\месяц\день\etc
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 18:27  [ТС] #10
Цитата Сообщение от zulkis Посмотреть сообщение
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
#include <Windows.h>
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
        WIN32_FIND_DATA wf;
        HANDLE FF;
        FILETIME gettime;
        SYSTEMTIME systime,yourfiletime;
        GetLocalTime(&systime);
        
 
        char dir[] = "D:/tasm//*.LST";
        FF = FindFirstFile(dir,&wf);
        gettime = wf.ftLastWriteTime;
        FileTimeToSystemTime(&gettime,&yourfiletime);
         if (FF == INVALID_HANDLE_VALUE) 
   {
      cout << "FindFirstFile failed: " << GetLastError() << "\n";
   } 
   else 
   {
      cout << "The first file found is:" << wf.cFileName << "\n";
   }
        system("pause");
        
}
Разберешься ? сравнивай systemtime и yourfiletime.
Они являются структурами. Внутри - год\месяц\день\etc
вот! это то, что я хотел! Спасибо большое!)

Такой вопрос, допусти мне нужно вывести имя файла, если он последний раз редактировался до 14.7.2009, то мне нужно сравнивать по блоково? То есть, сначала год, потом месяц, потом день? и если условия выполняются, то выводить имя на экран? Я правильно рассуждаю?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.02.2011, 18:31 #11
Ну да, вполне логично.
1
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
15.02.2011, 20:24  [ТС] #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
// win_api.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
        WIN32_FIND_DATA wf;
        HANDLE FF;
        FILETIME gettime;
        SYSTEMTIME ft;
        int year = 2008, month = 9, day = 29;
                
 
        char dir[] = "D:/tasm//*.LST";
        FF = FindFirstFile(dir,&wf); 
        gettime = wf.ftLastWriteTime;
        FileTimeToSystemTime(&gettime,&ft);
 
        if (ft.wYear <= year) {
            if (ft.wYear < year) {
                cout << wf.cFileName << "\n";
            }
            if (ft.wMonth == month) {
                if (ft.wDay < day) {
                    cout << wf.cFileName << "\n";
                }
            }
            if (ft.wMonth < month) {
                cout << wf.cFileName << "\n";
            }
        }
        
        while (INVALID_HANDLE_VALUE) {
            FindNextFile(FF,&wf);
            gettime = wf.ftLastWriteTime;
            FileTimeToSystemTime(&gettime,&ft);
            if (ft.wYear <= year) {
                if (ft.wYear < year) {
                    cout << wf.cFileName << "\n";
                }
                if (ft.wMonth == month) {
                    if (ft.wDay < day) {
                        cout << wf.cFileName << "\n";
                    }
                }
                if (ft.wMonth < month) {
                    cout << wf.cFileName << "\n";
                }
            }
        }
 
        system("pause");
        
}
вродь сделал, но чет оно подвисает, гляньте где я камень словил, пожалуйста

Добавлено через 23 минуты
такс... нашел... ошибка с ифах... ща буду переделывать...

Добавлено через 9 минут
сделал...
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
// win_api.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
        WIN32_FIND_DATA wf;
        HANDLE FF;
        BOOL FN;
        FILETIME gettime;
        SYSTEMTIME ft;
        int year = 2012, month = 9, day = 29;
                
 
        char dir[] = "D:/tasm//*.LST";
        FF = FindFirstFile(dir,&wf);
        gettime = wf.ftLastWriteTime;
        FileTimeToSystemTime(&gettime,&ft);
        if (ft.wYear == year) {
            if (ft.wMonth == month) {
                if (ft.wDay < day) {
                    cout << wf.cFileName << "\n";
                }
            }
            if (ft.wMonth < month) {
                cout << wf.cFileName << "\n";
            }
        }
        if (ft.wYear < year) {
            cout << wf.cFileName << "\n";
        }
        FN = 1;
        while (FN!=0) {
            FN = FindNextFile(FF,&wf);
            gettime = wf.ftLastWriteTime;
            FileTimeToSystemTime(&gettime,&ft);
            if (ft.wYear == year) {
                if (ft.wMonth == month) {
                    if (ft.wDay < day) {
                        cout << wf.cFileName << "\n";
                    }
                }
                if (ft.wMonth < month) {
                    cout << wf.cFileName << "\n";
                }
            }
            if (ft.wYear < year) {
                cout << wf.cFileName << "\n";
            }
        }
        system("pause");
}
все бы хорошо, но последний файл дублируется... Скажите как исправить, пожалуйста

Добавлено через 41 минуту
подскажите как правильно cout заменить на WriteConsole() ?
0
15.02.2011, 20:24
Ответ Создать тему
Опции темы

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