📄 transferprogdlg.cpp
字号:
// TransferProgDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RMTool.h"
#include "TransferProgDlg.h"
#include "Packet.h"
#include "ServerView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTransferProgDlg dialog
CTransferProgDlg::CTransferProgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTransferProgDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTransferProgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pApp = (CRMToolApp*)AfxGetApp();
m_bCancel = FALSE;
}
void CTransferProgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTransferProgDlg)
DDX_Control(pDX, IDC_PROGRESS_TOTAL, c_TotalProg);
DDX_Control(pDX, IDC_PROGRESS_SERVER, c_ServerProg);
DDX_Control(pDX, IDC_PROGRESS_FILE, c_FileProg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTransferProgDlg, CDialog)
//{{AFX_MSG_MAP(CTransferProgDlg)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
ON_MESSAGE(UM_START_TRANSFER_NEWFILE, CTransferProgDlg::OnStartTransferNewFile)
ON_MESSAGE(UM_SUCCESS_TRANSFER_FILE, CTransferProgDlg::OnSuccessTransferFile)
ON_MESSAGE(UM_TRANSFERING, CTransferProgDlg::OnTransfering)
ON_MESSAGE(UM_ALL_TRANSFER_COMPLETE, CTransferProgDlg::OnAllTransferComplete)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTransferProgDlg message handlers
BOOL CTransferProgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetProgressMode();
memset(m_szConIp,0,sizeof(m_szConIp));
g_pFt->SetProgressingHandle( m_hWnd ); //DLL俊 Dialog狼 勤甸蔼阑 悸泼秦 霖促.
m_nCurFolderFileNum = 0;
m_nSendedFolderFileCount = 0; //泅犁 割俺狼 颇老鳖瘤 焊陈唱 货绰 墨款飘
m_nSendedServerCount = 0; //泅犁 割俺狼 辑滚俊 颇老 焊陈唱 货绰 墨款飘
// TransferExeFile();
if(ConnectAndStartTransfer() == NULL)
return FALSE;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CTransferProgDlg::AddFolder(CString szPath)
{
char file[ _MAX_PATH ];
char temp[ _MAX_PATH ]; memset(temp,0,_MAX_PATH);
//ConnectionInfo result; memset(&result,0,sizeof(result));
CString ext;
CString base = szPath;
szPath += "\\*.*";
CFileFind finder;
BOOL bWorking = finder.FindFile(szPath);
while(bWorking)
{
bWorking = finder.FindNextFile();
if(finder.IsDots()) continue;
memset(file,0, _MAX_PATH);
sprintf(file, "%s", finder.GetFileName());
if(finder.IsDirectory()) //叼泛配府 捞搁
{
sprintf(temp,"%s\\%s",base,file);
if(!g_pFt->AddFile(temp, TRUE))
{
return FALSE;
}
if(!AddFolder(temp)) //犁蓖 龋免
{
return FALSE;
}
}
else //颇老捞搁
{
ext = GetFileExt(file);
ext.MakeLower();
sprintf(temp,"%s\\%s",base,file);
if(ext == "ini")
{
::GetPrivateProfileString("server_info","own_server_ip_for_server","",
m_szConIp, sizeof(m_szConIp),temp );
//result.dwPort = ::GetPrivateProfileInt("server_info","own_server_port_for_server",0,temp);
}
/* else if(ext == "exe")
{
int k=0;
}*/
//弃歹救狼 傈价秦具且 颇老狼 肮荐啊 割俺牢啊 烙矫肺 扁撅窍霸 秦滴磊..
m_nCurFolderFileNum++;
if(!g_pFt->AddFile(temp, FALSE))
{
return FALSE;
}
}
}
finder.Close();
return TRUE;
}
CString CTransferProgDlg::GetFileExt(CString szPath)
{
return szPath.Right(szPath.GetLength() - szPath.ReverseFind('.') - 1);
}
//货肺款 颇老 傈价阑 矫累茄促绰 皋技瘤甫 DLL俊辑 罐酒 龋免登绰 勤甸矾捞促..
void CTransferProgDlg::OnStartTransferNewFile(WPARAM wParam, LPARAM lParam)
{
lParam;
if(m_bCancel) return;
//wParam俊绰 傈价阑 矫累窍绰 颇老疙 CString* 啊 逞绢柯促. LPARAM俊绰 配呕 轿捞令
m_szCurTransferingFile = *((CString*)wParam);
CString str;
if(m_szCurTransferingFile.GetLength() > 40)
str.Format("..%s Sending files...", m_szCurTransferingFile.Right(40));
else
str.Format("%s Sending files...",m_szCurTransferingFile);
SetDlgItemText(IDC_STATIC_FILE,str);
}
//颇老 窍唱啊 己傍利栏肺 葛滴 Send 灯阑锭狼 皋技瘤甫 罐酒 龋免登绰 勤甸矾捞促..
void CTransferProgDlg::OnSuccessTransferFile(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
if(m_bCancel) return;
//exe颇老捞 傈价 肯丰等 版快 阿辑滚寸 exe颇老篮 窍唱父 傈价登骨肺..
//弊锭狼 exe颇老阑 烙矫 历厘秦滴菌促啊.. 秦寸 辑滚俊 措茄 颇老傈价捞 场唱搁
//傈价罐篮 阿 弃歹肺 Copy窍扼绰 菩哦阑 朝妨霖促.
if(GetFileExt(m_szCurTransferingFile) == "exe")
{
CString temp;
CString temp2 = m_szCurTransferingFile.Right( m_szCurTransferingFile.GetLength() - m_szCurTransferingFile.ReverseFind('\\') - 1 );
for(int i=0; i<4 ; i++)
{
temp = m_pApp->m_szServerFile[ m_nCurServerSet ][i];
temp = temp.Right( temp.GetLength() - temp.ReverseFind('\\') -1 );
if(!temp2.CompareNoCase(temp))
{
m_szCopyFile = temp;
}
}
}
m_szCurTransferingFile = "";
m_nSendedFolderFileCount++; //泅犁 割俺鳖瘤 罐疽唱 墨款飘 刘啊
CString str;
str.Format("All %dFiles Now %dFiles Transfer Complete.", m_nCurFolderFileNum , m_nSendedFolderFileCount);
SetDlgItemText(IDC_STATIC_TOTAL,str);
c_TotalProg.SetPos(m_nSendedFolderFileCount); //橇肺弊饭胶官 悸泼
}
//颇老 傈价吝老锭 泅犁 颇老傈价 柳青 惑炔 皋技瘤甫 罐酒 龋免登绰 勤甸矾捞促..
void CTransferProgDlg::OnTransfering(WPARAM wParam, LPARAM lParam)
{
if(m_bCancel) return;
//wParam俊绰 醚 颇老 荤捞令啊.. lParam俊绰 泅犁鳖瘤 焊辰 颇老 荤捞令(byte)啊 朝酒柯促.
CString str;
DWORD dwKB;
if(wParam > 1024)
{
dwKB = wParam / 1024;
str.Format("(%ldKB/%ldKB)",lParam/1024, wParam/1024);
}
else
{
dwKB = wParam;
str.Format("(%ldbytes/%ldbytes)", lParam, wParam);
}
float percentage = (float)((lParam*1.0 / wParam*1.0) * 100.);
c_FileProg.SetPos((int)percentage);
SetDlgItemText(IDC_STATIC_FILE_BYTE,str);
}
//茄 辑滚俊 措茄 颇老傈价 场车阑锭.. (DLL 郴何 钮俊 颇老捞 歹捞惑 巢酒乐瘤 臼阑锭.) 皋技瘤甫 罐酒 龋免登绰 勤甸矾..
void CTransferProgDlg::OnAllTransferComplete(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
if(m_bCancel) return;
//g_pFt->CloseClientSocket();
m_nSendedServerCount++;
c_ServerProg.SetPos(m_nSendedServerCount);
CString name[4];
for(int i=0; i<4; i++)
{
//CString ExeFile = m_pDoc->m_szServerFile[ type ].Right( m_pDoc->m_szServerFile[ type ].GetLength() - m_pDoc->m_szServerFile[ type ].ReverseFind('\\') - 1);
name[i] = m_pApp->m_szServerFile[ m_nCurServerSet ][i].Right( m_pApp->m_szServerFile[ m_nCurServerSet ][i].GetLength()
- m_pApp->m_szServerFile[ m_nCurServerSet ][i].ReverseFind('\\') - 1);
}
char packet[1024];
int offset = 3;
packet[0] = PTCL_RM;
packet[1] = MSG_RM_COPY_FILE;
packet[2] = (char)name[0].GetLength();
memcpy(packet + offset, name[0], name[0].GetLength());
offset += name[0].GetLength();
packet[ offset ] = (char)name[1].GetLength(); offset += 1;
memcpy(packet + offset, name[1], name[1].GetLength());
offset += name[1].GetLength();
packet[ offset ] = (char)name[2].GetLength(); offset += 1;
memcpy(packet + offset, name[2], name[2].GetLength());
offset += name[2].GetLength();
packet[ offset ] = (char)name[3].GetLength(); offset += 1;
memcpy(packet + offset, name[3], name[3].GetLength());
offset += name[3].GetLength();
//瘤陛 颇老阑 罐篮 Listener俊霸 exe颇老阑 阿 弃歹肺 Copy窍扼绰 皋技瘤甫 朝妨霖促.
//PACKET_FILE_COPY packet( m_szCopyFile.GetBuffer( m_szCopyFile.GetLength() ) );
//g_pFt->Send((char*)&packet, packet.GetPacketSize());
g_pFt->Send((char*)packet, (BYTE)offset);
if(m_nDropFileCount == m_nSendedServerCount) //葛电 辑滚俊 促 焊陈阑 版快
{
CString str;
str.Format("All %dFile Transfer To Server! (%d/%d)",m_nDropFileCount,m_nSendedServerCount, m_nDropFileCount);
SetDlgItemText(IDC_STATIC_SERVER,str);
MessageBox("Complete to File Transfer","Transfer Completed");
#ifdef RM_LOG_MODE //ddd
// CServerView* pView = (CServerView*)GetParent();
str.Format("ServerPatch :: [by INI]01. Transfer Ini Files and Folder!(Applied: %d server)",m_nSendedServerCount);
m_pApp->LogServer(m_nCurServerSet,str);
str.Format("ServerPatch :: [by INI]02. Send File Copy Message!(%s, %s, %s, %s)",name[0],name[1],name[2],name[3]);
m_pApp->LogServer(m_nCurServerSet,str);
#endif
CloseDialog();
}
else
{
g_pFt->CloseClientSocket();
ConnectAndStartTransfer();
}
}
void CTransferProgDlg::SetProgressMode(int mode)
{
mode;
//归弊扼款靛 祸彬 瘤沥..
c_ServerProg.SetBkColor(RGB(228,228,228));
c_TotalProg.SetBkColor(RGB(228,228,228));
c_FileProg.SetBkColor(RGB(228,228,228));
c_ServerProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
c_TotalProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
c_FileProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
//Progress Bar 焊歹 咯归 炼辆
CRect rect(1,1,1,1);
c_TotalProg.SetBorders(&rect);
c_FileProg.SetBorders(&rect);
c_ServerProg.SetBorders(&rect);
//Percentage Mode 悸泼
c_FileProg.SetShowPercent(TRUE);
c_TotalProg.SetShowPercent(TRUE);
c_ServerProg.SetShowPercent(TRUE);
c_FileProg.SetRange(0,100);
}
void CTransferProgDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
BOOL CTransferProgDlg::ConnectAndStartTransfer()
{
//InitDialog俊辑 霉锅掳 弃歹疙阑 罐酒客 弊 救俊 乐绰 颇老甸阑 葛滴促 Add 矫虐绊..
//颇老 傈价 胶鸥飘甫 矫难 焊磊..
POSITION pos = m_PathList.GetHeadPosition();
if(pos == NULL)
return FALSE; //List is Empty!!
CString path = m_PathList.GetAt(pos); //府胶飘狼 霉锅掳俊 乐绰 菩胶甫 罐酒坷绊..
//ReadRoot 悸泼
g_pFt->SetReadRoot(path.GetBuffer(path.GetLength()));
//弃歹 郴俊 乐绰 颇老甸阑 Add窍绊 ini颇老 俊辑 佬绢靛赴 IP客 器飘锅龋啊 糕滚 函荐俊 悸泼等促.
if(!AddFolder(path))
{
AfxMessageBox("Can not add folder!");
CloseDialog();
return FALSE;
}
c_TotalProg.SetRange(0, (short)m_nCurFolderFileNum); //颇老 肮荐 唱鸥郴绰 橇肺弊饭胶官狼 MAX蔼 汲沥
c_ServerProg.SetRange(0, (short)m_nDropFileCount); //醚 割俺狼 辑滚俊 颇老阑 焊尘巴牢瘤甫 悸泼
//弃歹救狼 ini 颇老俊 乐带 林家肺 立加..
if(!g_pFt->Connect(m_szConIp, RMTOOL_CONNECT_PORT ))
{
CString str;
str.Format("Can not connect server! IP: %s",m_szConIp);
AfxMessageBox(str);
CloseDialog();
return FALSE;
}
CString str;
str.Format("(%s) Server Sending Files... (%d/%d)",m_szConIp ,m_nSendedServerCount, m_nDropFileCount);
SetDlgItemText(IDC_STATIC_SERVER,str);
m_PathList.RemoveAt(pos); //窍唱 佬绢甸看栏搁 瘤况具瘤.. 付摹 钮贸烦 荤侩窍扁 困茄..
//促款肺靛 版肺 嘎苗林绊..
CString szTemp, szTemp2;
szTemp = m_pApp->m_szDownloadPath[ m_nCurServerSet ];
szTemp2 = szTemp.Mid(3);
PACKET_SET_DOWNLOAD_PATH packet(szTemp.GetAt(0), szTemp2.GetBuffer( szTemp2.GetLength() ));
g_pFt->Send((char*)&packet, (unsigned short)packet.GetPacketSize());
//
g_pFt->StartTransfer(); //窍唱狼 辑滚俊 措茄 颇老 傈价 Start
return TRUE;
}
void CTransferProgDlg::CloseDialog()
{
g_pFt->ClearFileQueue();
g_pFt->CloseClientSocket();
EndDialog(IDOK);
}
void CTransferProgDlg::OnOK()
{
// TODO: Add extra validation here
CloseDialog();
m_bCancel = TRUE;
//CDialog::OnOK();
}
BOOL CTransferProgDlg::IsFile(CString path)
{
CFileFind finder;
BOOL bWorking = finder.FindFile(path);
if(bWorking)
{
finder.FindNextFile();
if(!finder.IsDirectory() && !finder.IsDots()) //角青颇老 老锭
{
return TRUE;
}
finder.Close();
}
return FALSE;
}
BOOL CTransferProgDlg::TransferExeFile()
{
//g_pFt->SetReadRoot("D:\\ini");
g_pFt->SetReadRoot(m_pApp->m_szIniMakePath.GetBuffer( m_pApp->m_szIniMakePath.GetLength() ));
char szIP[ 16 ];
sprintf(szIP, "%s",m_pApp->m_szGameServerDataIp);
POSITION pos;
while(1)
{
pos = m_ExeList.GetHeadPosition();
if(pos == NULL)
break; //List is Empty!!
CString path = m_ExeList.GetAt(pos); //府胶飘狼 霉锅掳俊 乐绰 菩胶甫 罐酒坷绊..
g_pFt->AddFile(path.GetBuffer( path.GetLength() ),FALSE);
m_ExeList.RemoveAt(pos);
}
//秦寸 府胶呈俊 立加茄促.
if(!g_pFt->Connect(szIP, RMTOOL_CONNECT_PORT )) //立加
{
CString str;
str.Format("Can not connect server! IP: %s",szIP);
AfxMessageBox(str);
CloseDialog();
return FALSE;
}
CString szTemp, szTemp2;
szTemp = m_pApp->m_szUploadPath;
szTemp2 = szTemp.Mid(3);
//快急 绢叼俊辑 绢恫 颇老阑 促款罐阑瘤 府胶呈俊 焊辰促.
PACKET_SET_DOWNLOAD_PATH packet(szTemp.GetAt(0), szTemp2.GetBuffer( szTemp2.GetLength() ));
g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
// PACKET_SET_TEMP_DOWNLOAD_PATH packet('D',"ServerExec");
// g_pFt->Send((char*)&packet, packet.GetPacketSize());
g_pFt->StartTransfer();
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -