729 lines
18 KiB
C++
729 lines
18 KiB
C++
// DLG_Corp_File.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "smsmanager.h"
|
||
#include "DLG_Corp_File.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// DLG_Corp_File dialog
|
||
#include "MainFrm.h"
|
||
#include "UserDlg.h"
|
||
#include "K_Agent.h"
|
||
#include "DLG_Corp_File_Add.h"
|
||
#include "io.h"
|
||
|
||
DLG_Corp_File::DLG_Corp_File(CWnd* pParent /*=NULL*/)
|
||
: CDialog(DLG_Corp_File::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(DLG_Corp_File)
|
||
m_strCorpName = _T("");
|
||
m_strCorpID = _T("");
|
||
//}}AFX_DATA_INIT
|
||
|
||
m_pDlg = (CDialog *)pParent;
|
||
m_lDlgType = 0;
|
||
memset( &m_FileReq , 0 , sizeof(m_FileReq) );
|
||
m_pFileData = NULL;
|
||
m_lUpAllSize = 0;
|
||
m_lUpUpSize = 0;
|
||
m_lUpFileID =0;
|
||
|
||
m_lDownAllSize = 0;
|
||
m_lDownUpSize = 0;
|
||
m_lDownFileID =0;
|
||
m_lFileType = 0;
|
||
|
||
}
|
||
|
||
|
||
void DLG_Corp_File::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(DLG_Corp_File)
|
||
DDX_Control(pDX, IDC_CORP_FILE_GDT, m_P_GDT);
|
||
DDX_Control(pDX, IDC_CORP_FILE_LIST, m_wndList);
|
||
DDX_Text(pDX, IDC_CORP_FILE_CORPNAME, m_strCorpName);
|
||
DDX_Text(pDX, IDC_CORP_FILE_CORPID, m_strCorpID);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(DLG_Corp_File, CDialog)
|
||
//{{AFX_MSG_MAP(DLG_Corp_File)
|
||
ON_BN_CLICKED(IDC_CORP_FILE_ADD, OnCorpFileAdd)
|
||
ON_NOTIFY(NM_DBLCLK, IDC_CORP_FILE_LIST, OnDblclkCorpFileList)
|
||
ON_BN_CLICKED(IDC_CORP_FILE_MODIFY, OnCorpFileModify)
|
||
ON_BN_CLICKED(IDC_CORP_FILE_DEL, OnCorpFileDel)
|
||
ON_BN_CLICKED(IDC_CORP_FILE_UPLOAD, OnCorpFileUpload)
|
||
ON_BN_CLICKED(IDC_CORP_FILE_DOWNLOAD, OnCorpFileDownload)
|
||
//}}AFX_MSG_MAP
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// DLG_Corp_File message handlers
|
||
|
||
BOOL DLG_Corp_File::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
|
||
|
||
m_strCorpName = m_FileReq.ret.szCorpName;
|
||
m_strCorpID.Format( _T("%d") , m_FileReq.ret.lCorpID );
|
||
this->UpdateData(false);
|
||
|
||
//³õʼ»¯List
|
||
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
|
||
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) );
|
||
m_wndList.SubClassWindow2();
|
||
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÎļþÀàÐÍ,100; Ç©¶©Ê±¼ä,90; ÉÏ´«Ê±¼ä,90; ÉÏ´«Óû§,80;´óС(K),70;ÊÇ·ñÍêÕû,70;ÔʼÎļþÃû,200;±¸×¢,200;"));
|
||
m_wndList.SetGridLines(true);
|
||
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
|
||
|
||
for ( int i = 0 ; i< m_FileReq.lCount ; i++ )
|
||
{
|
||
SetListText(m_pFileData[i],-1); //-1ΪÌí¼Ó
|
||
}
|
||
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// EXCEPTION: OCX Property Pages should return FALSE
|
||
}
|
||
|
||
void DLG_Corp_File::SetParam(ANS_Corp_File File, ANS_Corp_FileData *pFileData,long lDlgType)
|
||
{
|
||
m_FileReq = File;
|
||
m_pFileData = pFileData;
|
||
m_lDlgType = lDlgType;
|
||
}
|
||
|
||
BOOL DLG_Corp_File::ProcessSocket(Socket_Head *pHead)
|
||
{
|
||
//²é¿´Óû§¼Ç¼
|
||
if (pHead->lFuncType == SMSFUNC_CORP_FILE)
|
||
{
|
||
ANS_Corp_File * pFile = (ANS_Corp_File *)pHead->pFrame;
|
||
ANS_Corp_FileData * pFileData = (ANS_Corp_FileData *)(pHead->pFrame+sizeof(ANS_Corp_File));
|
||
if ( pFile->lCount < 0 ) //ȨÏÞ²»×㣬·µ»Ø´íÎó
|
||
return true;
|
||
|
||
if ( pFile->ret.lReqType == 1 ) //Ìí¼Ó
|
||
{
|
||
if ( pFile->bOK && pFile->lCount>0 )
|
||
{
|
||
SetListText(*pFileData , -1 ); //-1ΪÌí¼Ó
|
||
}
|
||
}
|
||
if ( pFile->ret.lReqType == 2 ) //ÐÞ¸Ä
|
||
{
|
||
if ( pFile->bOK && pFile->lCount>0 )
|
||
{
|
||
SetListText(*pFileData , -2 ); //-1ΪÐÞ¸Ä×ÊÁÏ
|
||
}
|
||
}
|
||
if ( pFile->ret.lReqType == 3 ) //ɾ³ý
|
||
{
|
||
if ( pFile->bOK && pFile->lCount>0 )
|
||
{
|
||
long lItem=0;
|
||
long lCount=m_wndList.GetItemCount();
|
||
for ( int i=0 ; i<lCount ; i++ )
|
||
{
|
||
if ( m_wndList.GetItemData(i) == pFileData->lFileID )
|
||
{
|
||
lItem = i;
|
||
break;
|
||
}
|
||
}
|
||
if ( i>=lCount )
|
||
return true;
|
||
|
||
m_wndList.DeleteItem(lItem);
|
||
}
|
||
}
|
||
if ( pFile->ret.lReqType == 4 ) //ÉÏ´«
|
||
{
|
||
if ( pFile->bOK && pFile->lCount>0 )
|
||
{
|
||
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //ÒÑÉÏ´«Íê±Ï
|
||
{
|
||
|
||
m_P_GDT.SetRange(0,0); //ÉÏ´«Íê³É£¬¹Ø±Õ¹ö¶¯Ìõ
|
||
m_UpFile.Close();
|
||
|
||
//¸üÐÂÐÅÏ¢
|
||
ANS_Corp_FileData FileData={0};
|
||
FileData.lFileID = pFile->ret.lFileID;
|
||
FileData.lFileSize=pFile->ret.lAllSize;
|
||
FileData.lUploadSize=pFile->ret.lUpSize;
|
||
_tcscpy(FileData.szFileName , pFile->ret.szCorpName );
|
||
::GetLocalTime(&FileData.tUploadTime);
|
||
SetListText(FileData , -3 ); //-3Ϊ¸üÐÂÉÏ´«×ÊÁÏ
|
||
|
||
MessageBox( _T("ÎļþÉÏ´«Íê³É£¡") , _T("ÐÅÏ¢") , MB_ICONINFORMATION );
|
||
EnableCtrl(true);
|
||
|
||
|
||
}
|
||
else
|
||
{
|
||
m_P_GDT.SetPos(pFile->ret.lUpSize);
|
||
UpFileNext();
|
||
}
|
||
}
|
||
}
|
||
|
||
if ( pFile->ret.lReqType == 5 ) //ÏÂÔØ
|
||
{
|
||
|
||
|
||
if ( pFile->bOK && pFile->lCount>0 )
|
||
{
|
||
#define MAXUPFILESIZE 32*1024 //ÿ´ÎÏÂÔØ32K
|
||
//if ( pFile->ret.lSize <= pFile->ret.lUpSize ) //ÊÕµ½µÚÒ»Ö¡
|
||
if (pFile->ret.lUpSize <= MAXUPFILESIZE) //ÊÕµ½µÄµÚÒ»Ö¡
|
||
{
|
||
m_P_GDT.SetRange32(0,pFile->ret.lAllSize);
|
||
|
||
BYTE cRarHead[] = { 0x52,0x61,0x72,0x21,0x1A,0x07,0x00,0xCF,0x90,0x73,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
|
||
long lRarHeadLen = sizeof(cRarHead);
|
||
if (memcmp((BYTE*)pFileData, (BYTE*)cRarHead, lRarHeadLen) == 0)
|
||
{
|
||
m_lFileType = 0; //rarÎļþ
|
||
}
|
||
else
|
||
{
|
||
m_lFileType = 1; //ÆäËüÎļþ
|
||
}
|
||
}
|
||
|
||
|
||
m_DownFile.Write((BYTE*)pFileData ,pFile->ret.lSize ); //дÎļþ
|
||
|
||
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //ÏÂÔØÍê³É
|
||
{
|
||
m_P_GDT.SetRange(0,0); //ÉÏ´«Íê³É£¬¹Ø±Õ¹ö¶¯Ìõ
|
||
m_DownFile.Close();
|
||
|
||
EnableCtrl(true);
|
||
CString strTemp=m_strDownFileName;
|
||
strTemp.MakeUpper();
|
||
//·ÇѹËõÎļþ»òÔÎļþ¾ÍÊÇѹËõÎļþµÄ£¬Ö±½Ó½«Îļþ¿½µ½Ä¿µÄÎļþ¼Ð
|
||
if (m_lFileType==1 || strTemp.Find(_T(".RAR"))>0 || strTemp.Find(_T(".ZIP"))>0 ) //ÔÀ´ÉÏ´«µÄ¾ÍÊÇѹËõÎļþ£¬ÎÞÐèÒªÔÙ½âѹ
|
||
{
|
||
if ( ! ::CopyFile(m_strDownRarFile,m_strDownFilePath +CString(_T("\\"))+ m_strDownFileName , false ) )
|
||
{
|
||
MessageBox(_T("¿½±´Îļþµ½Ä¿µÄÎļþ¼Ðʧ°Ü!") , _T("´íÎó") , MB_ICONWARNING );
|
||
return true;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//È¡µ±Ç°Îļþ¼Ð
|
||
TCHAR szPath[512]={0};
|
||
GetCurrentPath(szPath);
|
||
CString strRar;
|
||
strRar.Format( _T("%srar.exe") , szPath );
|
||
//½«Îļþ½âѹµ½Ä¿µÄÎļþ¼Ð
|
||
STARTUPINFO si;
|
||
PROCESS_INFORMATION pi;
|
||
ZeroMemory( &si, sizeof(si) );
|
||
si.cb = sizeof(si);
|
||
ZeroMemory( &pi, sizeof(pi) );
|
||
CString strCmd;
|
||
strCmd.Format( _T("%s x -y \"%s\" \"%s\"") , strRar,m_strDownRarFile,m_strDownFilePath +CString(_T("\\")));
|
||
|
||
|
||
BOOL b2=CreateProcess(NULL,strCmd.GetBuffer(),NULL,NULL,false,NULL,NULL,NULL,&si,&pi);
|
||
if ( b2 )
|
||
{
|
||
if ( WaitForSingleObject( pi.hProcess, 50000 ) !=WAIT_TIMEOUT) //µÈ´ý20Ãë
|
||
{
|
||
//Èç¹ûѹËõ³É¹¦£¬É¾³ýÔÎļþ
|
||
//::DeleteFile( strFileName );
|
||
}
|
||
}
|
||
Sleep(500); //ÑÓʱһ»á
|
||
}
|
||
long lRet = MessageBox(_T("ÎļþÏÂÔØÍê³É£¡ÊÇ·ñ³¢ÊÔÖ±½Ó´ò¿ªÎļþ£¿"), _T("ÌáÎÊ"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1);
|
||
if (lRet == IDYES)
|
||
{
|
||
//ÏÂÔØÍê³É£¬´ò¿ªÎļþ
|
||
ShellExecute(NULL, _T("open"), m_strDownFileName, NULL, m_strDownFilePath, SW_SHOWNORMAL);
|
||
}
|
||
|
||
|
||
}
|
||
else
|
||
{
|
||
m_P_GDT.SetPos(pFile->ret.lUpSize);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
void DLG_Corp_File::OnCorpFileAdd()
|
||
{
|
||
ANS_Corp_FileData FileData={0};
|
||
FileData.lCorpType = m_FileReq.ret.lCorpType;
|
||
FileData.lCorpID = m_FileReq.ret.lCorpID;
|
||
|
||
DLG_Corp_File_Add dlg(this);
|
||
dlg.SetParam( FileData , true );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
FileData = dlg.GetParam();
|
||
|
||
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
|
||
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
|
||
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
|
||
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
|
||
|
||
*pPayRet = m_FileReq.ret;
|
||
pPayRet->lReqType = 1; //Ìí¼Ó
|
||
|
||
*pPayDataRet = FileData;
|
||
|
||
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
|
||
|
||
}
|
||
|
||
}
|
||
|
||
void DLG_Corp_File::SetListText(ANS_Corp_FileData FileData, long lType)
|
||
{
|
||
CString str;
|
||
long lItem=0;
|
||
if ( lType==-1 )
|
||
{
|
||
lItem = m_wndList.GetItemCount();
|
||
str.Format( _T("%d") , lItem+1 );
|
||
m_wndList.InsertItem( lItem , str , 0 );
|
||
}
|
||
if ( lType==-2 || lType==-3)
|
||
{
|
||
long lCount=m_wndList.GetItemCount();
|
||
for ( int i=0 ; i<lCount ; i++ )
|
||
{
|
||
if ( m_wndList.GetItemData(i) == FileData.lFileID )
|
||
{
|
||
lItem = i;
|
||
break;
|
||
}
|
||
}
|
||
if ( i>=lCount )
|
||
return ;
|
||
}
|
||
|
||
int iTemp=1;
|
||
if ( lType == -1 || lType == -2 )
|
||
{
|
||
m_wndList.SetItemText( lItem , iTemp++ , FileData.szFileType);
|
||
str.Format( _T("%04d.%02d.%02d") , FileData.tFileTime.wYear,FileData.tFileTime.wMonth,FileData.tFileTime.wDay );
|
||
m_wndList.SetItemText( lItem , iTemp++ , str );
|
||
}
|
||
else
|
||
{
|
||
iTemp += 2 ;
|
||
}
|
||
|
||
if ( lType==-1 || lType == -3 )
|
||
{
|
||
str.Format( _T("%04d.%02d.%02d") , FileData.tUploadTime.wYear,FileData.tUploadTime.wMonth,FileData.tUploadTime.wDay );
|
||
m_wndList.SetItemText( lItem , iTemp++ , str );
|
||
m_wndList.SetItemText( lItem , iTemp++ , FileData.szUploadUser );
|
||
if ( FileData.lFileSize>0 )
|
||
str.Format( _T("%d") , FileData.lFileSize/1024 );
|
||
else
|
||
str = _T("0");
|
||
m_wndList.SetItemText( lItem , iTemp++ , str );
|
||
if ( FileData.lFileSize>0 )
|
||
str = FileData.lFileSize == FileData.lUploadSize ? _T(" ÊÇ") : _T(" ·ñ");
|
||
else
|
||
str = _T(" ·ñ");
|
||
m_wndList.SetItemText( lItem , iTemp++ , str );
|
||
m_wndList.SetItemText( lItem , iTemp++ , FileData.szFileName );
|
||
}
|
||
else
|
||
{
|
||
iTemp += 5;
|
||
}
|
||
|
||
if ( lType == -1 || lType == -2 )
|
||
{
|
||
m_wndList.SetItemText( lItem , iTemp++ , FileData.szBZ );
|
||
}
|
||
else
|
||
{
|
||
iTemp+=1;
|
||
}
|
||
|
||
m_wndList.SetItemData( lItem , FileData.lFileID );
|
||
}
|
||
|
||
long DLG_Corp_File::GetCurrentSelected()
|
||
{
|
||
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
||
if ( pos )
|
||
{
|
||
return m_wndList.GetNextSelectedItem(pos);
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
void DLG_Corp_File::OnDblclkCorpFileList(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
*pResult = 0;
|
||
|
||
|
||
OnCorpFileModify();
|
||
}
|
||
|
||
void DLG_Corp_File::OnCorpFileModify()
|
||
{
|
||
long lItem = GetCurrentSelected();
|
||
if ( lItem<0 )
|
||
return ;
|
||
|
||
ANS_Corp_FileData FileData={0};
|
||
FileData.lCorpType = m_FileReq.ret.lCorpType;
|
||
FileData.lCorpID = m_FileReq.ret.lCorpID;
|
||
|
||
FileData.lFileID = m_wndList.GetItemData(lItem);
|
||
|
||
m_wndList.GetItemText(lItem , 1 , FileData.szFileType , sizeof(FileData.szFileType)-2 );
|
||
m_wndList.GetItemText(lItem , 8 , FileData.szBZ , sizeof(FileData.szBZ)-2 );
|
||
|
||
CString str;
|
||
str = m_wndList.GetItemText(lItem , 2 );
|
||
COleDateTime t;
|
||
str.Replace( _T(".") , _T("-") );
|
||
BOOL btime = t.ParseDateTime(str,VAR_DATEVALUEONLY);
|
||
if ( t.GetStatus() == COleDateTime::valid )
|
||
{
|
||
t.GetAsSystemTime(FileData.tFileTime);
|
||
}
|
||
|
||
|
||
DLG_Corp_File_Add dlg(this);
|
||
dlg.SetParam( FileData , false );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
FileData = dlg.GetParam();
|
||
|
||
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
|
||
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
|
||
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
|
||
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
|
||
|
||
*pPayRet = m_FileReq.ret;
|
||
pPayRet->lReqType = 2; //ÐÞ¸Ä
|
||
|
||
*pPayDataRet = FileData;
|
||
|
||
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
|
||
|
||
}
|
||
|
||
}
|
||
|
||
void DLG_Corp_File::OnCorpFileDel()
|
||
{
|
||
long lItem = GetCurrentSelected();
|
||
if ( lItem<0 )
|
||
return ;
|
||
|
||
ANS_Corp_FileData FileData={0};
|
||
FileData.lCorpType = m_FileReq.ret.lCorpType;
|
||
FileData.lCorpID = m_FileReq.ret.lCorpID;
|
||
|
||
FileData.lFileID = m_wndList.GetItemData(lItem);
|
||
CString str,str2;
|
||
str = m_wndList.GetItemText(lItem , 1 );
|
||
|
||
str2.Format( _T("È·ÈÏҪɾ³ý(%s)ÎļþÂð£¿") , str );
|
||
int iRet = MessageBox(str2 , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
|
||
if ( iRet != IDYES )
|
||
return ;
|
||
|
||
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
|
||
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
|
||
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
|
||
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
|
||
|
||
*pPayRet = m_FileReq.ret;
|
||
pPayRet->lReqType = 3; //ɾ³ý
|
||
|
||
*pPayDataRet = FileData;
|
||
|
||
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
|
||
}
|
||
|
||
void DLG_Corp_File::OnCorpFileUpload()
|
||
{
|
||
long lItem = GetCurrentSelected();
|
||
if ( lItem<0 )
|
||
return ;
|
||
|
||
m_lUpFileID = m_wndList.GetItemData(lItem);
|
||
CString str = m_wndList.GetItemText(lItem ,6 );
|
||
if ( str == _T(" ÊÇ") )
|
||
{
|
||
int iRet =MessageBox( _T("ËùÑ¡µÄÎļþÒÑÉÏ´«ÍêÕû£¬ÊÇ·ñÖØÐÂÉÏ´«£¿") , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
|
||
if ( iRet != IDYES )
|
||
return ;
|
||
}
|
||
|
||
#define FILE_FILTER_TEXT \
|
||
TEXT("ËùÓÐÎļþ (*.*)\0*.*;\0\0")
|
||
|
||
TCHAR szFile[ 256 ];
|
||
TCHAR szFileB[ 256 ];
|
||
*szFileB = NULL;
|
||
_stprintf( szFile , _T("*.*") );
|
||
|
||
OPENFILENAME sOpen;
|
||
sOpen.lStructSize = sizeof( sOpen );
|
||
sOpen.hwndOwner = this->m_hWnd ;
|
||
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
|
||
sOpen.lpstrFilter = FILE_FILTER_TEXT;
|
||
sOpen.lpstrDefExt = _T("*");
|
||
sOpen.lpstrCustomFilter = NULL;
|
||
sOpen.nMaxCustFilter = 0;
|
||
sOpen.lpstrFile = szFile;
|
||
sOpen.nMaxFile = sizeof( szFile );
|
||
sOpen.lpstrFileTitle = szFileB;
|
||
sOpen.nMaxFileTitle = sizeof( szFileB );
|
||
sOpen.lpstrInitialDir = NULL;
|
||
sOpen.lpstrTitle = _T("´ò¿ªÉÏ´«µÄÎļþ");
|
||
if ( ::GetOpenFileName( &sOpen ) )
|
||
{
|
||
CString strName = sOpen.lpstrFile;
|
||
CString strTemp = strName;
|
||
CString strName2= strName;
|
||
strTemp.MakeUpper();
|
||
if ( strTemp.Find(_T(".RAR"))>0 || strTemp.Find(_T(".ZIP"))>0 ) //ÒÑÊÇѹËõÎļþ£¬ÎÞÐèÔÙѹËõÉÏ´«
|
||
{
|
||
|
||
}
|
||
else
|
||
{
|
||
//ѹËõÎļþ
|
||
//È¡µ±Ç°Îļþ¼Ð
|
||
TCHAR szPath[512]={0};
|
||
GetCurrentPath(szPath);
|
||
CString strRar;
|
||
strRar.Format( _T("%srar.exe") , szPath );
|
||
_tcscat(szPath , _T("Temp\\") );
|
||
::CreateDirectory(szPath,NULL); //´´½¨Îļþ¼Ð
|
||
_tcscat(szPath , _T("UpLoad.rar") );
|
||
if ( _taccess(szPath, 0) != -1 )
|
||
{
|
||
if ( !::DeleteFile(szPath) )
|
||
{
|
||
MessageBox( _T("Îļþ³åÍ»£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
}
|
||
|
||
CString strRarName = szPath;
|
||
|
||
STARTUPINFO si;
|
||
PROCESS_INFORMATION pi;
|
||
ZeroMemory( &si, sizeof(si) );
|
||
si.cb = sizeof(si);
|
||
ZeroMemory( &pi, sizeof(pi) );
|
||
CString strCmd;
|
||
strCmd.Format( _T("%s a -ep1 \"%s\" \"%s\"") , strRar,strRarName,strName);
|
||
|
||
BOOL b2=CreateProcess(NULL,strCmd.GetBuffer(),NULL,NULL,false,NULL,NULL,NULL,&si,&pi);
|
||
if ( b2 )
|
||
{
|
||
if ( WaitForSingleObject( pi.hProcess, 50000 ) !=WAIT_TIMEOUT) //µÈ´ý20Ãë
|
||
{
|
||
//Èç¹ûѹËõ³É¹¦£¬É¾³ýÔÎļþ
|
||
//::DeleteFile( strFileName );
|
||
}
|
||
Sleep(500); //ÑÓʱһ»á
|
||
strName2 = strRarName;
|
||
}
|
||
else
|
||
{
|
||
strCmd.Format(_T("ѹËõÎļþʧ°Ü£¨%d£©£¬½«Ê¹ÓÃÔÎļþÉÏ´«!\r\n%s"), ::GetLastError(),strCmd);
|
||
MessageBox(strCmd, _T("Ìáʾ"), MB_ICONINFORMATION);
|
||
}
|
||
}
|
||
//È¡ÔʼÎļþÃû
|
||
m_strUpFileName = strName;
|
||
long lLen = strName.GetLength();
|
||
for ( int i=lLen-1 ; i>=0 ; i-- )
|
||
{
|
||
if ( strName.GetAt(i) == '\\' || strName.GetAt(i) == '/' )
|
||
{
|
||
m_strUpFileName = strName.Right(lLen-i-1);
|
||
break;
|
||
}
|
||
}
|
||
|
||
//¿ªÊ¼ÉÏ´«
|
||
if ( !m_UpFile.Open(strName2 , CFile::modeRead) )
|
||
{
|
||
MessageBox( _T("´ò¿ªÎļþ´íÎ󣬽¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
m_lUpAllSize=m_UpFile.GetLength();
|
||
if ( m_lUpAllSize>2*1024*1024 ) //ÊÇ·ñ´óÓÚ2M
|
||
{
|
||
m_UpFile.Close();
|
||
MessageBox( _T("²»ÄÜÉÏ´«³¬¹ý2MµÄÎļþ£¬ÇëÏÈËõСºóÔÙÉÏ´«!") , _T("´íÎó") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
m_lUpUpSize=0;
|
||
|
||
EnableCtrl(false);
|
||
m_P_GDT.SetRange32(0,m_lUpAllSize);
|
||
UpFileNext();
|
||
}
|
||
|
||
}
|
||
|
||
BOOL DLG_Corp_File::UpFileNext()
|
||
{
|
||
#define MAXUPFILESIZE 32*1024 //ÿ´ÎÉÏ´«32K
|
||
|
||
long lSize = sizeof(REQ_Corp_File) + MAXUPFILESIZE;
|
||
BYTE * pData = new BYTE[lSize];
|
||
memset(pData , 0 , lSize );
|
||
REQ_Corp_File * pFile = (REQ_Corp_File * )pData;
|
||
BYTE * pBuf = pData+sizeof(REQ_Corp_File);
|
||
|
||
pFile->lFileID = m_lUpFileID;
|
||
pFile->lReqType= 4; //ÉÏ´«
|
||
_tcscpy(pFile->szCorpName , m_strUpFileName );
|
||
pFile->lAllSize = m_lUpAllSize;
|
||
DWORD dwRead=0;
|
||
dwRead = m_UpFile.Read(pBuf , MAXUPFILESIZE );
|
||
if ( dwRead >0 )
|
||
{
|
||
m_lUpUpSize += dwRead;
|
||
pFile->lUpSize= m_lUpUpSize;
|
||
pFile->lSize = dwRead;
|
||
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void DLG_Corp_File::OnCorpFileDownload()
|
||
{
|
||
long lItem = GetCurrentSelected();
|
||
if ( lItem<0 )
|
||
return ;
|
||
|
||
long lFileID = m_wndList.GetItemData(lItem);
|
||
CString str = m_wndList.GetItemText(lItem ,6 );
|
||
if ( str != _T(" ÊÇ") )
|
||
{
|
||
MessageBox( _T("ËùÑ¡µÄÎļþδÉÏ´«ÍêÕû£¬²»ÄÜÏÂÔØ!") , _T("´íÎó") , MB_ICONWARNING);
|
||
return ;
|
||
}
|
||
|
||
//ѹËõÎļþ
|
||
//È¡µ±Ç°Îļþ¼Ð
|
||
TCHAR szPath[512]={0};
|
||
GetCurrentPath(szPath);
|
||
_tcscat(szPath , _T("Temp\\") );
|
||
::CreateDirectory(szPath,NULL); //´´½¨Îļþ¼Ð
|
||
_tcscat(szPath , _T("DownLoad.rar") );
|
||
if ( _taccess(szPath, 0) != -1 )
|
||
{
|
||
if ( !::DeleteFile(szPath) )
|
||
{
|
||
MessageBox( _T("Îļþ³åÍ»£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
}
|
||
m_strDownRarFile = szPath;
|
||
|
||
BROWSEINFO BInfo={0};
|
||
BInfo.hwndOwner = this->GetSafeHwnd();
|
||
BInfo.pszDisplayName = szPath;
|
||
BInfo.pidlRoot=0;
|
||
BInfo.lpszTitle = _T("ÇëÑ¡ÔñÎļþ±£´æÂ·¾¶£º");
|
||
BInfo.ulFlags = BIF_RETURNONLYFSDIRS; //¹æ¶¨Ö»ÄÜÑ¡ÔñÎļþ¼Ð£¬ÆäËûÎÞЧ
|
||
LPCITEMIDLIST pid = SHBrowseForFolder(&BInfo);
|
||
if ( pid && SHGetPathFromIDList(pid,szPath) )
|
||
{
|
||
|
||
if ( !m_DownFile.Open(m_strDownRarFile , CFile::modeCreate|CFile::modeWrite) )
|
||
{
|
||
MessageBox( _T("´´½¨Îļþʧ°Ü£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
|
||
EnableCtrl(false);
|
||
|
||
str = m_wndList.GetItemText(lItem,7); //ÔʼÎļþÃû
|
||
m_strDownFilePath = szPath;
|
||
//m_strDownFileName = m_strDownFilePath + _T("\\")+ str;
|
||
m_strDownFileName = str; //ÔʼÎļþÃû
|
||
m_lFileType = 0;// 0-rarÎļþ£¬1-ÆÕͨÎļþ
|
||
|
||
REQ_Corp_File * pFile = new REQ_Corp_File;
|
||
memset(pFile , 0 , sizeof(REQ_Corp_File));
|
||
pFile->lFileID = lFileID;
|
||
pFile->lReqType= 5; //ÏÂÔØ
|
||
_tcscpy(pFile->szCorpName , str );
|
||
SendFrame(SMSFUNC_CORP_FILE , (BYTE*)pFile , sizeof(REQ_Corp_File) );
|
||
}
|
||
}
|
||
|
||
void DLG_Corp_File::EnableCtrl(BOOL b)
|
||
{
|
||
|
||
GetDlgItem(IDC_CORP_FILE_LIST)->EnableWindow(b);
|
||
GetDlgItem(IDC_CORP_FILE_ADD)->EnableWindow(b);
|
||
GetDlgItem(IDC_CORP_FILE_MODIFY)->EnableWindow(b);
|
||
GetDlgItem(IDC_CORP_FILE_DEL)->EnableWindow(b);
|
||
GetDlgItem(IDC_CORP_FILE_UPLOAD)->EnableWindow(b);
|
||
GetDlgItem(IDC_CORP_FILE_DOWNLOAD)->EnableWindow(b);
|
||
}
|
||
|
||
void DLG_Corp_File::GetCurrentPath(TCHAR *pPath)
|
||
{
|
||
if ( m_lDlgType == 1 ) //´úÀíÉÌ
|
||
{
|
||
((CK_Agent*)m_pDlg)->m_pMainFrame->GetCurrentPath(pPath);
|
||
}
|
||
else
|
||
{
|
||
((CUserDlg*)m_pDlg)->m_pMainFrame->GetCurrentPath(pPath);
|
||
}
|
||
|
||
}
|
||
|
||
BOOL DLG_Corp_File::SendFrame(unsigned char lFuncType, unsigned char *pFrame, unsigned long lFrameLen)
|
||
{
|
||
if ( m_lDlgType == 1 ) //´úÀíÉÌ
|
||
{
|
||
return ((CK_Agent*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
|
||
}
|
||
else
|
||
{
|
||
return ((CUserDlg*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
|
||
}
|
||
|
||
}
|