#include <windows.h>
BOOL FindLatestFile(TCHAR* pPath,TCHAR* pLatestFile);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
TCHAR cFile[_MAX_PATH];
FindLatestFile("c:\\winnt",cFile);
return 0;
}
//Call with pLatestFile pointing to a buffer
//of at least _MAX_PATH TCHARS
//name of the latest file is in pLatestFile
//if there is one
BOOL FindLatestFile(TCHAR* pPath,TCHAR* pLatestFile)
{
BOOL bReturn = FALSE;
HANDLE hFind;
WIN32_FIND_DATA ffd;
TCHAR* pFile;
int iLen;
TCHAR cWorkingPath[_MAX_PATH];
FILETIME ftLatest = {0,0};
if(pPath && pLatestFile)
{
*pLatestFile = '\0';
lstrcpy(cWorkingPath,pPath);
iLen = lstrlen(cWorkingPath);
if(iLen > 0)
{
switch(cWorkingPath[iLen - 1])
{
case '\\':
case '/':
break;
default:
cWorkingPath[iLen] = '\\';
iLen++;
cWorkingPath[iLen] = '\0';
}
}
pFile = cWorkingPath + iLen;
lstrcat(cWorkingPath,"*.*"

;
hFind = FindFirstFile(cWorkingPath,&ffd);
if(hFind != INVALID_HANDLE_VALUE)
{
bReturn = TRUE;
do
{
if((ffd.dwFileAttributes &
FILE_ATTRIBUTE_DIRECTORY) == 0)
{
if(CompareFileTime(&ffd.ftLastWriteTime,
&ftLatest) > 0)
{
ftLatest = ffd.ftLastWriteTime;
lstrcpy(pLatestFile,ffd.cFileName);
}
}
}while(FindNextFile(hFind,&ffd));
FindClose(hFind);
}
}
return bReturn;
}