⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cefind.c

📁 在xince中查找所有TrueType字体的程序 这是一个wince的控制台程序
💻 C
字号:
//======================================================================
// CEFind - A Windows CE console file search application
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//======================================================================
#include <windows.h>                 // For all that Windows stuff

// Returns number of elements
#define dim(x) (sizeof(x) / sizeof(x[0]))   

int SrchDirectory (LPTSTR pszDir);
//----------------------------------------------------------------------
// Global data
//
int nTotal = 0;
int nFiles = 0;

//======================================================================
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPWSTR lpCmdLine, int nCmdShow) {
    TCHAR pInput[256];

    if (wcslen (lpCmdLine) == 0) {
        printf ("USAGE: CEFIND filespec\n");
        return 0;
    }
    printf ("\n");                         // Initialize the console.
    // We always start at the root.
    if (*lpCmdLine != TEXT ('\\')) {
        pInput[0] = TEXT ('\\');
    } else
        pInput[0] = L'\0';
    wcscat (pInput, lpCmdLine);

    // Perform recursive search.
    SrchDirectory (pInput);

    wprintf (L"\n  %9d file(s) found.   %d bytes.\n", nFiles, nTotal);
    return 0;
}
//----------------------------------------------------------------------
// SrchDirectory - Recursive routine that searches a dir and all
// child dirs for matching files
//
int SrchDirectory (LPTSTR pszDir) {
    WIN32_FIND_DATA fd;
    TCHAR szNew[MAX_PATH];
    INT i, rc, nErr = 0;
    HANDLE hFind;
    TCHAR *pPtr, *pSrcSpec;

    // Separate subdirectory from search specification.
    for (pSrcSpec = pszDir + lstrlen (pszDir); pSrcSpec >= pszDir; 
         pSrcSpec--)
        if (*pSrcSpec == TEXT ('\\'))
            break;

    // Copy the search specification up to the last directory
    // separation character.
    if (pSrcSpec <= pszDir)
        lstrcpy (szNew, TEXT ("\\"));
    else {
        for (i = 0; (i < dim(szNew)-10) && 
                    ((pszDir+i) <= pSrcSpec); i++)
            szNew[i] = *(pszDir+i);
        szNew[i] = TEXT ('\0');
    }
    pPtr = szNew + lstrlen (szNew);

    // Find matching files.
    hFind = FindFirstFile (pszDir, &fd);
    if (hFind != INVALID_HANDLE_VALUE) {

        do {
            // Report all matching files.
            if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
                wprintf (L"  %9d\t %s%s\n", fd.nFileSizeLow, szNew, 
                         fd.cFileName);
                nTotal += fd.nFileSizeLow;
                nFiles++;
            }

            rc = FindNextFile (hFind, &fd);
        } while (rc);

        FindClose (hFind);
    } else {
        rc = GetLastError();
        if ((rc != ERROR_FILE_NOT_FOUND)  && 
            (rc != ERROR_NO_MORE_FILES)) {
            wprintf (L"1Find Error.  Str:%s rc:%d", pszDir, rc);
            return -1;
        }
    }

    // Create generic search string for all directories.
    lstrcat (szNew, TEXT ("*.*"));

    hFind = FindFirstFile (szNew, &fd);
    if (hFind != INVALID_HANDLE_VALUE) {
        do {
            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                // Recurse to the lower directory
                lstrcpy (pPtr, fd.cFileName);
                lstrcat (pPtr, pSrcSpec);
                nErr = SrchDirectory (szNew);
                if (nErr) break;
                *pPtr = TEXT ('\0');
            }
            rc = FindNextFile (hFind, &fd);
        } while (rc);

        FindClose (hFind);
    } else {
        rc = GetLastError();
        if ((rc != ERROR_FILE_NOT_FOUND) && 
            (rc != ERROR_NO_MORE_FILES)) {
            wprintf (L"2Find Error:%d", rc);
            return -1;
        }
    }
    return nErr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -