Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI Номер строки ListView после изменений https://www.cyberforum.ru/ win-api/ thread435481.html
Создал ListView из двух колонок, в них записал данные из исходных массивов (фамилия, имя). Далее пользователь может производить поиск (вводит в EditBox значения и жмет кнопку Искать): я ищу в обоих массивах подходящие значения и заново заполняю ListView. Как потом узнать номер строки, по которой пользователь дважды щелкнул мышкой (определять я умею) применительно к исходным массивам (мне нужно...
Как загрузить шрифт из файла C++ WinAPI
Привет, друзья! Хочу загрузить шрифт .ttf (TrueType) с помощью функции CreateFont непосредственно из файла (папки, где находится программа), как можно такое сделать? приведите пожалуйста пример? WinAPI c++?
C++ WinAPI Установить фокус ввода https://www.cyberforum.ru/ win-api/ thread435093.html
Создаю диалоговое окно из ресурсов, где описаны в том числе несколько EditBox'ов. Как определенному ЕдитБоксу установить фокус ввода или каретку, чтобы юзер при открытии окна мог сразу набирать текст? Сейчас приходится тыкать мышкой перед вводом. SetFocus(...) не помогает. Спасибо!
C++ WinAPI почему так происходит Господа пытаюсь удалить запись из реестра с названием "uu",а у меня удаляется папка с таким названием вот текст программы - HKEY hKey; char szPath; GetModuleFileName(NULL, szPath, sizeof(szPath)); RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, "", ... https://www.cyberforum.ru/ win-api/ thread434626.html
C++ WinAPI при создании процесса создаётся ярлык в трее, по окончании процесса он не убираетс сам, как его убрать оттуда?
Друзья! Вот исходник процесса, качнул с инета. Это в консольном режиме запускат аудио файлы, например mp3: // cmdmp3 // A command-line MP3 player for Windows // (console-mode version) // // License: MIT / X11 // Copyright (c) 2009 by James K. Lawless // jimbo@radiks.net http://www.radiks.net/~jimbo // http://www.mailsend-online.com //
C++ WinAPI Программа не компилируется (необъявленные идентификаторы) https://www.cyberforum.ru/ win-api/ thread433859.html
есть программа, на С, выдает куча ошибок связанные с необъявленными идентификаторами и тд. Помогите исправить скорее всего я думаю это в VS2010 ошибки#include "windows.h" #include <stdio.h> #include "process.h" #include <conio.h> HANDLE hSemaphore; int my_array; int who_must_do=1; int times; HANDLE hThread1,hThread2;
C++ WinAPI Извлечь картинку из чужого Timage (Delphi) https://www.cyberforum.ru/ win-api/ thread433371.html
Есть чужая программа написанная на Delphi. Исходников нету. Есть на ней Timage. Мне нужно каким то образом получить битмап в свою программу из нее. Скриншот не подходит. Сложность в том, что там слайдер есть и картинка не полная скриншотится :( Народ помогите застрял пипец. Куда мне копать.
C++ WinAPI mdi-форма. Активизация элементов при нажатии Tab
mdi-форма. Как передавать активность элементов на форме (вроде SetFocus за это отвечает) по нажатию Tab? В диалоговых окнах насколько я понял это можно сделать, но мне они не подходят. SetFocus передает фокус например Treeview, а дальше по Tab Treeview фокус уже не отпускает, пикает компьютер
C++ WinAPI Кнопка со странным видом: черный квадрат Привет всем, есть такая проблема, написал на API код который создаёт пустое окно, потом добавил код который добавляет туда кнопку. Но вот беда кнопка получилась - чёрный квадрат. Что с ней делать? Вот код. // GT_HelloWorldWin32.cpp // compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c #include <windows.h> #include <stdlib.h> #include <string.h> #include <tchar.h> // Global... https://www.cyberforum.ru/ win-api/ thread432376.html C++ WinAPI Немогу нормально вывести текст в окно https://www.cyberforum.ru/ win-api/ thread432265.html
Непойму в чем проблем. Пытаюсь вывести текст прочитаный из файла в окно а выводит всякую гадостьLRESULT CALLBACK ChildProc1 (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; RECT rt; TCHAR text; static HANDLE hText; static DWORD nCharRead; static int sx, sy; static DWORD nCharRead;
C++ WinAPI Взаимодействие кнопок и форм(созданных) с клавиатурой
Всем привет. Два дня изучаю Win API(пытаюсь по-крайней мере), вопросов куча, но главный пока один. Как сделать так, чтобы я вводил в форму ввода какое-то число и оно у меня запомнилось в какой-то переменной, т.е. чтобы я мог сделать с этим числом какие-то операции(не обязательно число, текст, допустим)? Просто у меня начальная цель создать простейшую программу, для сложения двух чисел. Да вот...
C++ WinAPI Получение списка процессов Windows https://www.cyberforum.ru/ win-api/ thread432057.html
привет всем! надо написать программу которая управляет процессорами windows для каждого процесса выводит имя,директорию,занимаемая память и т. д. и еще Операции с каждым процессом :запуск нового процесса,завершение процесс
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 2
14.01.2015, 12:24 0

Рекурсивный обход (FindFirstFile, FindNextFile) - C++ WinAPI - Ответ 7103971

14.01.2015, 12:24. Показов 6141. Ответов 5
Метки (Все метки)

Ответ

Я тут сделал без рекурсии. В виде стёка HANDLE поисков, всё в 1 цикле. Пришлось правда хорошо подумать и делать класс. Теоретически должен работать быстрее, т.к. нет вызовов функций и передачи параметров. Но операции с файлами сами по себе медленные.
Для больших объёмов нужно индексирование конечно, возможно ручное делать...

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
    class FindFiles{ //Рекурсивный поиск файлов.
    protected:
        vector<HANDLE> vSearchs; //текущий уровень поиска в дереве папок
        wstring szTempl;
    public:
        wstring szCurPath; //путь до текущего файла 
        WIN32_FIND_DATAW Info; //полученные данные о файле.
        FindFiles(const wstring& szPatch); //указание пути поиска (без последнего разделителя: "C:/Docs")
        ~FindFiles();
        bool Next(); //Найти следующий файла, заполнить Info и szCurPath. Если возвращает 0 поиск закончен.
    };
 
    FindFiles::FindFiles(const wstring& szPatch){
        szTempl = L"*.*"; //шаблон, чтобы находить и папки
        vSearchs.push_back(0);
        szCurPath = szPatch;
    }
    FindFiles::~FindFiles(){
        for (vector<HANDLE>::iterator i = vSearchs.begin(); i != vSearchs.end(); ++i)
            if (*i) FindClose(*i);
    }
    bool FindFiles::Next(){
        while (1){
            if (vSearchs.back() == 0){ //проводим первый поиск
                if (szCurPath == L"") return 0;
                vSearchs.back() = FindFirstFileW( (szCurPath+L"/"+szTempl).c_str(), &Info );
                if (vSearchs.back() == INVALID_HANDLE_VALUE) return 0;
            }else if ( !FindNextFileW(vSearchs.back(), &Info) ){ //или последующий
                if (vSearchs.size() < 2) return 0; //не найдено в главной папке - конец поиска
                FindClose( vSearchs.back() ); //не найденно в подпапке продолжаем поиск в родителе
                vSearchs.pop_back();
                szCurPath = szCurPath.substr(0, szCurPath.rfind(L'/'));
                continue;
            }
            if (wcscmp(Info.cFileName, L".") == 0 || wcscmp(Info.cFileName, L"..") == 0) continue; //пропуск ссылок на себя и родителя
            if (Info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){ //нашли папку, заходим в неё
                szCurPath += L"/"+wstring(Info.cFileName);
                vSearchs.push_back(0);
                continue;
            }
            return 1; //найден файл (данные были записаны сразу)
        }
        return 0;
    }
Пример использования:
C++
1
2
3
4
5
6
7
    FindFiles findFile(L"C:\Docs");
    while (findFile.Next()){
        wstring szExt = GetFileExtension(findFile.Info.cFileName); //только doc
        if (szExt == L"doc"){
            ReadFile( findFile.szCurPath+L"/"+WStr(findFile.Info.cFileName) ) ;
        }
    }


Вернуться к обсуждению:
Рекурсивный обход (FindFirstFile, FindNextFile) C++ WinAPI
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2015, 12:24
Готовые ответы и решения:

FindFirstFile и FindNextFile рекурсивный поиск файла
Как безопасно (без всевозможных переполнений и высвобождением ресурсов) реализовать рекурсивный...

FindFirstFile, FindNextFile и setLocale
Пытался пройти по файлам в каталоге, как в примере на MSDN. Написал такой код #include...

FindNextFile,FindFirstFile,FindClose
#include &lt;windows.h&gt; #include &lt;iostream&gt; #include&lt;tchar.h&gt; using namespace std; //strcpy,...

Поиск папок с помощью FindFirstFile\FindNextFile
Как найти только папки?

5
14.01.2015, 12:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2015, 12:24
Помогаю со студенческими работами здесь

WIN32 FindFirstFile и FindNextFile возвращают некорректное время
Здравствуйте. При листинге каталога Windows функциями FindFirstFile и FindNextFile таким образом:...

FindNextFile в do {} while()
Здравствуйте. Хочу перебрать в цикле все файлы и папки в папке. Использую такой код: ...

FindNextFile
#include &lt;Windows.h&gt; #include &lt;iostream&gt; int main(int argc, TCHAR *argv) { WIN32_FIND_DATA...

Функция FindFirstFile
Нужно получить размер файла с помощью функции FindFirstFile.Но параметры nFileSizeHigh и...

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