?? rapidir.c
字號:
//======================================================================
// RapiDir - Returns the contents of a directory on a Windows CE system
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//======================================================================
#include <windows.h> // For all that Windows stuff
#include <stdio.h>
#include <rapi.h> // RAS includes
//======================================================================
// main - Program entry point
//
int main (int argc, char **argv) {
RAPIINIT ri;
char szSrch[MAX_PATH], *pPtr;
WCHAR szwDir[MAX_PATH];
CE_FIND_DATA *pfd;
DWORD i, cItems, dwTotal = 0;
FILETIME ft;
SYSTEMTIME st;
char ampm = 'a';
INT rc;
// Call RapiInitEx to asynchronously start RAPI session.
ri.cbSize = sizeof (ri);
rc = CeRapiInitEx (&ri);
if (rc != NOERROR) {
printf (TEXT ("Rapi Initialization failed\r\n"));
return 0;
}
// Wait 5 seconds for connect.
rc = WaitForSingleObject (ri.heRapiInit, 5000);
if (rc == WAIT_OBJECT_0) {
if (ri.hrRapiInit != NOERROR) {
printf (TEXT ("Rapi Initialization failed.\r\n"));
return 0;
}
} else if (rc == WAIT_TIMEOUT) {
printf (TEXT ("Rapi Initialization timed out.\r\n"));
return 0;
}
// If no argument, assume root directory.
if (argc > 1)
lstrcpy (szSrch, argv[1]);
else
lstrcpy (szSrch, "\\");
// Point to end of name.
pPtr = szSrch + lstrlen (szSrch) - 1;
// Strip any trailing backslash.
if (*pPtr == '\\')
*pPtr = '\0';
// Look for wildcards in filename. pPtr points to string end.
for (i = 0; (pPtr >= szSrch) && (*pPtr != '\\'); pPtr--) {
if ((*pPtr == '*') || (*pPtr == '?'))
i++;
}
// Display dir name first so that on long calls we show we're alive.
if (pPtr >= szSrch) {
char ch;
ch = *pPtr;
*pPtr = '\0';
printf (TEXT ("\r\n Directory of %s\r\n\r\n"), szSrch);
*pPtr = ch;
} else if (i)
printf (TEXT ("\r\n Directory of \\\r\n\r\n"));
else
printf (TEXT ("\r\n Directory of %s\r\n\r\n"), szSrch);
// No wildcards, append *.*
if (i == 0)
lstrcat (szSrch, "\\*.*");
// Convert ANSI string to Unicode.
mbstowcs (szwDir, szSrch, lstrlen (szSrch));
// RAPI call
rc = CeFindAllFiles (szwDir, FAF_SIZE_LOW | FAF_NAME |
FAF_ATTRIBUTES | FAF_LASTACCESS_TIME,
&cItems, &pfd);
// Display the results.
if (cItems) {
for (i = 0; i < cItems; i++) {
// Convert file time.
FileTimeToLocalFileTime (&pfd->ftLastAccessTime, &ft);
FileTimeToSystemTime (&ft, &st);
// Adjust for AM/PM.
if (st.wHour == 0)
st.wHour = 12;
else if (st.wHour > 11) {
ampm = 'p';
if (st.wHour > 12)
st.wHour -= 12;
}
printf (TEXT ("%02d/%02d/%02d %02d:%02d%c\t"),
st.wMonth, st.wDay, st.wYear,
st.wHour, st.wMinute, ampm);
// Display dir marker or file size.
if (pfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
printf (TEXT ("<DIR>\t\t "));
else {
printf (TEXT ("\t%8d "), pfd->nFileSizeLow);
dwTotal += pfd->nFileSizeLow;
}
// Display name, use Cap %S to indicate Unicode.
printf (TEXT ("%S\r\n"), pfd->cFileName);
pfd++;
}
printf (TEXT ("\t%10d File(s)\t%9d bytes\r\n\r\n"),
cItems, dwTotal);
} else
printf (TEXT ("File not Found\r\n\r\n"));
// Clean up by uninitializing RAPI.
CeRapiUninit ();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -