Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI ToAscii и Shift https://www.cyberforum.ru/ win-api/ thread23607.html
В мануалах написано что ToAscii возвращает код символа учитывая SIFT и CAPS_LOCK, реально же выдаются коды только маленьких букв Функция GetKeyboardState(KeyState) делает снимок состояния клавиатуры, старший бит сигнализирует о нажатии (1), у меня при вызове этой функции никаких изменений в буфере KeyState не происходит. Не подумайте что пишу шпиона, их в нете готовых навалом, хочется до...
Как отловить нажатие в checkbox в SysListView32? C++ WinAPI
как отловить нажатие в cheсbox в SysListView32. те я создал SysListView32 на winapi и вот хочу узнать как отловить момент когда в cheсbox ставиться галачка
C++ WinAPI wParam у HCBT_CREATEWND и HCBT_DESTROYWND не совпадают https://www.cyberforum.ru/ win-api/ thread23561.html
Здравствуйте, уважаемые гуру. У меня следующий вопрос, написал длл, в которой есть функция CBTProc, так вот при обработке событий HCBT_CREATEWND и HCBT_DESTROYWND хэндл одного и того же окна почему то не совпадает? Скажите так и должно быть? Если да, то как же тогда узнать, что за окно уничтожается, если в lParam при событии HCBT_DESTROYWND находиться NULL? Заранее благодарен за ответы. ...
C++ WinAPI Пароль текущего пользователя Товарищи, подскажите, а есть ли апишная функция для получения пароля текущего пользователя, только с учетом, что прога работает в домене с крайне обрезанными для простых смертных правами https://www.cyberforum.ru/ win-api/ thread23060.html
Как программно узнать установленные патчи для windows? C++ WinAPI
как программно узнать установленный патчи(обновления) kb95xxxx для windows. Типа узнать весь список всех установленых обновлений. Желательно для WinXP и WinVista
C++ WinAPI Движение фигур в окне Помогите плиз!Надо создать окно(WinAPI)и в нем несколько фигур которие можно двигать мишкой!Фигури создаю с помощю GDI+,координати передаю с помощю WM_MOUSEMOVE но реализации задачи не достиг.Помогите пожалуйста!!!! https://www.cyberforum.ru/ win-api/ thread22440.html
C++ WinAPI Как работать с темами winxp на tabcontrol? как работать с темами winxp на tabcontrol на winapi? Чтобы tabcontrol созданный с помощью winapi был белым а не серым. Я погуглил но резултата нет. Вообщем я нарил код , но у него всеровно некоторые компоненты на вкладках остаються серыми ! https://www.cyberforum.ru/ win-api/ thread22162.html WM_PAINT C++ WinAPI
На главном окне- статик. По сообщению WM_PAINT и при необходимости рисую на нем. Все как описано не в одной книжке по WinApi. Столкнулся со следующей неприятностью: иногда мой статик не прорисовывается частично. Например если его часть закрыта окном, а поверх поместить и свернуть третье окно, то часть статика под третьим окном останется серым...Проверял, сообщение WM_PAINT в этот момент вроде...
C++ WinAPI Как узнать об изменении размеров рабочей области экрана? Доступное место для окон на экране ограничивается панелью задач. Мне очень нужно знать об изменении размеров доступной (рабочей) области. Постоянно извлекать этот прямоугольник с помощью, например, SystemParametersInfo () - это не очень хорошо. Тогда вопрос ззключается вот в чем: посылает ли Windows сообщение об изменении рабочей области на экране и, если да, то какое? https://www.cyberforum.ru/ win-api/ thread21612.html C++ WinAPI Измерение Интернет-траффика Как можно измерить в реальном времени входящий/исходящий траффик с Интернетом ? Я понимаю, что ситуаций может быть много (dialup, LAN, DSL), но независимо от этого, наверно, нужно как-то отслеживать поток данных, проходящий через определенное соединение, дающее выход в и-нет. Нужно, вероятно, вернуть на уровне API состояние этого соединения. Дальше элементарного определения факта наличия... https://www.cyberforum.ru/ win-api/ thread21598.html
C++ WinAPI Доступ к контролам чужого окна
Как можно получить доступ к контролам чужого окна, зная его HWND? Конкретно мне нужно тестовое поле в которое пишется текст. И как этот текст изменить?
C++ WinAPI Win API FAQ Win API FAQ Статьи Win API https://www.cyberforum.ru/ win-api/ thread21274.html
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
26.02.2009, 00:09 0

ReadDirectoryChangesW и FILE_NOTIFY_INFORMATION - C++ WinAPI - Ответ 108166

26.02.2009, 00:09. Показов 12687. Ответов 7
Метки (Все метки)

Ответ

Цитата Сообщение от int_main Посмотреть сообщение
иногда при копировании файла в C:\\MSD\\ai9 возникает ошибка и прога вылетает
Под отладчиком смотрел? Намекну, что чтение неинициализированных данных всегда было опасно для жизни.
Цитата Сообщение от int_main Посмотреть сообщение
и почему при копировании в консоль выводит одну строку 2 раза?
Одна строка для каждого типа изменения. Именно так как запросил. Например, сначала файл создаётся, потом ему меняется размер, потом меняются аттрибуты. И на каждое действие своя строчка.

Хочешь сделать по-нормальному, тогда необходимо использовать асинхронный вариант работы этой функции и вынесением её в отдельный поток. Про эти дела читай у Рихтера.

Вот пример как это счастье можно реализовать:
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
void PrintNotifyInfo(PFILE_NOTIFY_INFORMATION pNotify)
{
    WCHAR szwFileName[MAX_PATH];
    ULONG ulCount = min(pNotify->FileNameLength/2, MAX_PATH-1);
    wcsncpy(szwFileName, pNotify->FileName, ulCount);
    szwFileName[ulCount] = L'\0';
    wprintf(L"%d. %s\n", pNotify->Action, szwFileName);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    LPCTSTR lpszRootFolder = "C:\\MSD\\ai9";
    
    HANDLE hDir = CreateFile(lpszRootFolder,
            GENERIC_READ,
            FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
            NULL,
            OPEN_EXISTING,
            FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED,
            NULL
            );
 
        // Специальная структура для асинхронных операций
    OVERLAPPED o = {};
        // Событие завершения операции
    o.hEvent = CreateEvent(0, FALSE, FALSE, 0);
 
    DWORD nBufferLength = 60*1024;
    BYTE* lpBuffer = new BYTE[nBufferLength];
    bool bStop = false;
    while(!bStop)
    { 
        // Запускаем функцию в асинхронном режиме и сразу же получаем управление. Код возврата не интересует.
        DWORD returnedBytes = 0;
        ReadDirectoryChangesW(hDir, lpBuffer, nBufferLength, TRUE,
            FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME,
            &returnedBytes, &o, 0);//указать адрес структуры overlapped
 
                // Теперь необходимо дождаться начатой операции
        DWORD dwWaitStatus = WaitForSingleObject(o.hEvent, INFINITE);
 
               // Всё закончтлось, можем обработать результат
        switch(dwWaitStatus) 
        { 
        case WAIT_OBJECT_0: 
            {
                DWORD seek = 0;
                while(seek < nBufferLength)
                {
                    PFILE_NOTIFY_INFORMATION pNotify = PFILE_NOTIFY_INFORMATION(lpBuffer + seek);
                    seek += pNotify->NextEntryOffset;
 
                    PrintNotifyInfo(pNotify);
 
                    if(pNotify->NextEntryOffset == 0)
                        break;
                } // while
            }
            break; 
        default: 
            bStop = true;
            break;
        } // switch
    } // while
 
        // В конце обязательно подчистим ресурсы
    CloseHandle(o.hEvent);
    delete [] lpBuffer;
}


Вернуться к обсуждению:
ReadDirectoryChangesW и FILE_NOTIFY_INFORMATION C++ WinAPI
2
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2009, 00:09
Готовые ответы и решения:

ReadDirectoryChangesW FILE_ACTION_MODIFIED вызывается два раза
При изменении файла FILE_ACTION_MODIFIED вызывается два раза, не могу понять почему? int...

Потеря контроля над окном (ReadDirectoryChangesW)
Доброго времени суток! Возникла проблема. Программа должна мониторить изменения в заданной папке....

Не пойму как работает функция ReadDirectoryChangesW
Пытаюсь отловить изменение в каталоге: while(::ReadDirectoryChangesW(hDir, outBuffer,...

Прекратить ReadDirectoryChangesW цикл из другого потока (Windows XP)
Здравствуйте! Значца, у меня есть некоторый класс, который следит за изменениями в директории с...

7
26.02.2009, 00:09
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru