FILETIME fileTime;
CString str,szFile,szFtpInfo;
WIN32_FIND_DATA findData;
HINTERNET hFind;
HINTERNET hInetSession=InternetOpen(szAppName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
szFtpInfo="正在连接";
szFtpInfo+=szFtpName;
szFtpInfo+="服务器";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
HINTERNET hFtpConn=InternetConnect(hInetSession,szFtpName,nPort,
szFtpUser,szFtpPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if(!hFtpConn)
{
szFtpInfo=szFtpName;
szFtpInfo+="服务器未接上";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
InternetCloseHandle(hInetSession);
::Sleep(10);
return 0L;
}
szFtpInfo=szFtpName;
szFtpInfo+="服务器已连上,用户";
szFtpInfo+=szFtpUser;
szFtpInfo+="登录成功";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
DWORD dwLength=MAX_PATH;
if(szFtpDirectory!=0)
FtpSetCurrentDirectory(hFtpConn,szFtpDirectory);
FtpGetCurrentDirectory(hFtpConn,szFtpDirectory,&dwLength);
::PostMessage(pServView->m_hWnd,WM_SETDIRECTORYDISPLAY,0,0);
szFtpInfo="正在查找文件";
if(!(hFind=FtpFindFirstFile(hFtpConn,_T("*"),&findData,0,0)))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
AfxMessageBox("目录为空,没有多余的内容");
goto end;
}
else
{
szFtpInfo="文件查找出错,退回,请查明原因";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
goto end;
}
}
do{
szFile=findData.cFileName;
strcpy(pInfo->szFileName,szFile);
fileTime=findData.ftLastWriteTime;
CTime time=CTime(fileTime);
CString str=time.Format("%x");
strcpy(pInfo->szFileDate,str);
if(findData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(pInfo->szFileSize,"");
pInfo->nType=DIRECTORYICON;
}
else
{
DWORD i=findData.nFileSizeLow;
if(i>1024)
{
str.Format("%ld",i/1024);
str+="KB";
}
else
str.Format("%ld",i);
strcpy(pInfo->szFileSize,str);
pInfo->nType=FILEICON;
}
::SendMessage(pServView->m_hWnd,WM_SETFILE,(WPARAM)pInfo,(LPARAM)SERVFILE);
}while(InternetFindNextFile(hFind,&findData));
::SendMessage(pServView->m_hWnd,WM_SETREDRAWFLAG,0,0);
InternetCloseHandle(hFind);
end:
szFtpInfo="查找文件结束";
pFtpInfoView->SendMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
::Sleep(10);
delete pInfo;
InternetCloseHandle(hFtpConn);
InternetCloseHandle(hInetSession);
CString str,szFile,szFtpInfo;
WIN32_FIND_DATA findData;
HINTERNET hFind;
HINTERNET hInetSession=InternetOpen(szAppName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
szFtpInfo="正在连接";
szFtpInfo+=szFtpName;
szFtpInfo+="服务器";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
HINTERNET hFtpConn=InternetConnect(hInetSession,szFtpName,nPort,
szFtpUser,szFtpPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if(!hFtpConn)
{
szFtpInfo=szFtpName;
szFtpInfo+="服务器未接上";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
InternetCloseHandle(hInetSession);
::Sleep(10);
return 0L;
}
szFtpInfo=szFtpName;
szFtpInfo+="服务器已连上,用户";
szFtpInfo+=szFtpUser;
szFtpInfo+="登录成功";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
DWORD dwLength=MAX_PATH;
if(szFtpDirectory!=0)
FtpSetCurrentDirectory(hFtpConn,szFtpDirectory);
FtpGetCurrentDirectory(hFtpConn,szFtpDirectory,&dwLength);
::PostMessage(pServView->m_hWnd,WM_SETDIRECTORYDISPLAY,0,0);
szFtpInfo="正在查找文件";
if(!(hFind=FtpFindFirstFile(hFtpConn,_T("*"),&findData,0,0)))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
AfxMessageBox("目录为空,没有多余的内容");
goto end;
}
else
{
szFtpInfo="文件查找出错,退回,请查明原因";
pFtpInfoView->PostMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
goto end;
}
}
do{
szFile=findData.cFileName;
strcpy(pInfo->szFileName,szFile);
fileTime=findData.ftLastWriteTime;
CTime time=CTime(fileTime);
CString str=time.Format("%x");
strcpy(pInfo->szFileDate,str);
if(findData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(pInfo->szFileSize,"");
pInfo->nType=DIRECTORYICON;
}
else
{
DWORD i=findData.nFileSizeLow;
if(i>1024)
{
str.Format("%ld",i/1024);
str+="KB";
}
else
str.Format("%ld",i);
strcpy(pInfo->szFileSize,str);
pInfo->nType=FILEICON;
}
::SendMessage(pServView->m_hWnd,WM_SETFILE,(WPARAM)pInfo,(LPARAM)SERVFILE);
}while(InternetFindNextFile(hFind,&findData));
::SendMessage(pServView->m_hWnd,WM_SETREDRAWFLAG,0,0);
InternetCloseHandle(hFind);
end:
szFtpInfo="查找文件结束";
pFtpInfoView->SendMessage(WM_RECORDFTPINFO,0,(LPARAM)(LPCTSTR)szFtpInfo);
::Sleep(10);
delete pInfo;
InternetCloseHandle(hFtpConn);
InternetCloseHandle(hInetSession);
解决方案 »
- 为什么软件都要去弄注册表。。。
- 请问 在dll中调用log4cplus出现内存访问冲突,而直接在exe中调用log4cplus没有问题,这时怎么回事?
- gllookat问题
- Openal 下 Ogg 音频播放问题。
- 有关超线程cpu的网络编程问题
- 有关DirectSound的,急,请帮帮忙
- 如何把 CString型的数据保存到数组中?
- 为什么编译的时候会出现链结错误?
- 如何获取本地硬盘都有哪些盘符,并得到这些盘符的label?
- Inside COM/Inside ATL/这两本书那里有电子版可以down?
- 如果我想创建一个数组,里边放一组字符串,那这样对不对? CString string[];
- 对数据库的一个菜鸟问题!!!请大家帮帮我这个菜鸟吧!!
不过你的程序不是我要的
你的是用CInternetSession实现的
这个简单我要的是CSocket的