SmsManager/DLG_Corp_File.cpp

725 lines
18 KiB
C++
Raw Normal View History

2025-01-14 10:46:18 +08:00
// 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);
//<2F><>ʼ<EFBFBD><CABC>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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,100; ǩ<><C7A9>ʱ<EFBFBD><CAB1>,90; <20>ϴ<EFBFBD>ʱ<EFBFBD><CAB1>,90; <20>ϴ<EFBFBD><CFB4>û<EFBFBD>,80;<3B><>С(K),70;<3B>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>,70;ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD>,200;<3B><>ע,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Ϊ<31><CEAA><EFBFBD><EFBFBD>
}
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)
{
//<2F><EFBFBD>û<EFBFBD><C3BB><EFBFBD>¼
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 ) //Ȩ<>޲<EFBFBD><DEB2><EFBFBD><E3A3AC><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
return true;
if ( pFile->ret.lReqType == 1 ) //<2F><><EFBFBD><EFBFBD>
{
if ( pFile->bOK && pFile->lCount>0 )
{
SetListText(*pFileData , -1 ); //-1Ϊ<31><CEAA><EFBFBD><EFBFBD>
}
}
if ( pFile->ret.lReqType == 2 ) //<2F>޸<EFBFBD>
{
if ( pFile->bOK && pFile->lCount>0 )
{
SetListText(*pFileData , -2 ); //-1Ϊ<31>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
}
}
if ( pFile->ret.lReqType == 3 ) //ɾ<><C9BE>
{
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 ) //<2F>ϴ<EFBFBD>
{
if ( pFile->bOK && pFile->lCount>0 )
{
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //<2F><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
{
m_P_GDT.SetRange(0,0); //<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>رչ<D8B1><D5B9><EFBFBD><EFBFBD><EFBFBD>
m_UpFile.Close();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
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Ϊ<33><CEAA><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
MessageBox( _T("<EFBFBD>ļ<EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>") , _T("<EFBFBD><EFBFBD>Ϣ") , MB_ICONINFORMATION );
EnableCtrl(true);
}
else
{
m_P_GDT.SetPos(pFile->ret.lUpSize);
UpFileNext();
}
}
}
if ( pFile->ret.lReqType == 5 ) //<2F><><EFBFBD><EFBFBD>
{
if ( pFile->bOK && pFile->lCount>0 )
{
#define MAXUPFILESIZE 32*1024 //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32K
//if ( pFile->ret.lSize <= pFile->ret.lUpSize ) //<2F>յ<EFBFBD><D5B5><EFBFBD>һ֡
if (pFile->ret.lUpSize <= MAXUPFILESIZE) //<2F>յ<EFBFBD><D5B5>ĵ<EFBFBD>һ֡
{
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<61>ļ<EFBFBD>
}
else
{
m_lFileType = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
}
}
m_DownFile.Write((BYTE*)pFileData ,pFile->ret.lSize ); //д<>ļ<EFBFBD>
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
m_P_GDT.SetRange(0,0); //<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3>رչ<D8B1><D5B9><EFBFBD><EFBFBD><EFBFBD>
m_DownFile.Close();
EnableCtrl(true);
CString strTemp=m_strDownFileName;
strTemp.MakeUpper();
//<2F><>ѹ<EFBFBD><D1B9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ԭ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ļ<EFBFBD><C4BC>ģ<EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><D3BD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
if (m_lFileType==1 || strTemp.Find(_T(".RAR"))>0 || strTemp.Find(_T(".ZIP"))>0 ) //ԭ<><D4AD><EFBFBD>ϴ<EFBFBD><CFB4>ľ<EFBFBD><C4BE><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ٽ<EFBFBD>ѹ
{
if ( ! ::CopyFile(m_strDownRarFile,m_strDownFilePath +CString(_T("\\"))+ m_strDownFileName , false ) )
{
MessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return true;
}
}
else
{
//ȡ<><C8A1>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
CString strRar;
strRar.Format( _T("%srar.exe") , szPath );
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ѹ<EFBFBD><D1B9>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
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) //<2F>ȴ<EFBFBD>20<32><30>
{
//<2F><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ɾ<EFBFBD><C9BE>ԭ<EFBFBD>ļ<EFBFBD>
//::DeleteFile( strFileName );
}
}
Sleep(500); //<2F><>ʱһ<CAB1><D2BB>
}
long lRet = MessageBox(_T("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"), _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1);
if (lRet == IDYES)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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; //<2F><><EFBFBD><EFBFBD>
*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(" <20><>") : _T(" <20><>");
else
str = _T(" <20><>");
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; //<2F>޸<EFBFBD>
*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("ȷ<EFBFBD><EFBFBD>Ҫɾ<EFBFBD><EFBFBD>(%s)<29>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>") , str );
int iRet = MessageBox(str2 , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , 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; //ɾ<><C9BE>
*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(" <20><>") )
{
int iRet =MessageBox( _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
if ( iRet != IDYES )
return ;
}
#define FILE_FILTER_TEXT \
TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> (*.*)\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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
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 ) //<2F><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ϴ<EFBFBD>
{
}
else
{
//ѹ<><D1B9><EFBFBD>ļ<EFBFBD>
//ȡ<><C8A1>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
CString strRar;
strRar.Format( _T("%srar.exe") , szPath );
_tcscat(szPath , _T("Temp\\") );
::CreateDirectory(szPath,NULL); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
_tcscat(szPath , _T("UpLoad.rar") );
if ( _taccess(szPath, 0) != -1 )
{
if ( !::DeleteFile(szPath) )
{
MessageBox( _T("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , 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) //<2F>ȴ<EFBFBD>20<32><30>
{
//<2F><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ɾ<EFBFBD><C9BE>ԭ<EFBFBD>ļ<EFBFBD>
//::DeleteFile( strFileName );
}
}
Sleep(500); //<2F><>ʱһ<CAB1><D2BB>
strName2 = strRarName;
}
//ȡԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD>
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;
}
}
//<2F><>ʼ<EFBFBD>ϴ<EFBFBD>
if ( !m_UpFile.Open(strName2 , CFile::modeRead) )
{
MessageBox( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return ;
}
m_lUpAllSize=m_UpFile.GetLength();
if ( m_lUpAllSize>2*1024*1024 ) //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>2M
{
m_UpFile.Close();
MessageBox( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2M<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , 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 //ÿ<><C3BF><EFBFBD>ϴ<EFBFBD>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; //<2F>ϴ<EFBFBD>
_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(" <20><>") )
{
MessageBox( _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>δ<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING);
return ;
}
//ѹ<><D1B9><EFBFBD>ļ<EFBFBD>
//ȡ<><C8A1>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
_tcscat(szPath , _T("Temp\\") );
::CreateDirectory(szPath,NULL); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
_tcscat(szPath , _T("DownLoad.rar") );
if ( _taccess(szPath, 0) != -1 )
{
if ( !::DeleteFile(szPath) )
{
MessageBox( _T("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return ;
}
}
m_strDownRarFile = szPath;
BROWSEINFO BInfo={0};
BInfo.hwndOwner = this->GetSafeHwnd();
BInfo.pszDisplayName = szPath;
BInfo.pidlRoot=0;
BInfo.lpszTitle = _T("<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
BInfo.ulFlags = BIF_RETURNONLYFSDIRS; //<2F>涨ֻ<E6B6A8><D6BB>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD><C4BC>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
LPCITEMIDLIST pid = SHBrowseForFolder(&BInfo);
if ( pid && SHGetPathFromIDList(pid,szPath) )
{
if ( !m_DownFile.Open(m_strDownRarFile , CFile::modeCreate|CFile::modeWrite) )
{
MessageBox( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return ;
}
EnableCtrl(false);
str = m_wndList.GetItemText(lItem,7); //ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD>
m_strDownFilePath = szPath;
//m_strDownFileName = m_strDownFilePath + _T("\\")+ str;
m_strDownFileName = str; //ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD>
m_lFileType = 0;// 0-rar<61>ļ<EFBFBD><C4BC><EFBFBD>1-<2D><>ͨ<EFBFBD>ļ<EFBFBD>
REQ_Corp_File * pFile = new REQ_Corp_File;
memset(pFile , 0 , sizeof(REQ_Corp_File));
pFile->lFileID = lFileID;
pFile->lReqType= 5; //<2F><><EFBFBD><EFBFBD>
_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 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
((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 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return ((CK_Agent*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
}
else
{
return ((CUserDlg*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
}
}