修复注册表管理窗口关闭时崩溃的缺陷
1、还原客户端的文件管理模块代码为gh0st的源码3.6版本. 2、修复上述"cmd窗口总是将输入命令输出2次"的遗留问题。 3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。
This commit is contained in:
Binary file not shown.
@@ -14,6 +14,7 @@
|
||||
<ProjectGuid>{D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}</ProjectGuid>
|
||||
<RootNamespace>My2015Remote</RootNamespace>
|
||||
<Keyword>MFCProj</Keyword>
|
||||
<ProjectName>Yama</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#define UM_ICONNOTIFY WM_USER+100
|
||||
|
||||
std::vector<CFileManagerDlg *> v_FileDlg;
|
||||
std::vector<CRegisterDlg *> v_RegDlg;
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -128,6 +129,7 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent /*=NULL*/)
|
||||
|
||||
CMy2015RemoteDlg::~CMy2015RemoteDlg()
|
||||
{
|
||||
Sleep(200);
|
||||
EnterCriticalSection(&m_cs);
|
||||
for (std::vector<CFileManagerDlg *>::iterator iter = v_FileDlg.begin();
|
||||
iter != v_FileDlg.end(); ++iter)
|
||||
@@ -138,6 +140,15 @@ CMy2015RemoteDlg::~CMy2015RemoteDlg()
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
||||
iter != v_RegDlg.end(); ++iter)
|
||||
{
|
||||
CRegisterDlg *cur = *iter;
|
||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
while (false == cur->m_bIsClosed)
|
||||
Sleep(1);
|
||||
delete cur;
|
||||
}
|
||||
LeaveCriticalSection(&m_cs);
|
||||
DeleteCriticalSection(&m_cs);
|
||||
}
|
||||
@@ -187,6 +198,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx)
|
||||
ON_MESSAGE(WM_OPENSERVICESDIALOG, OnOpenServicesDialog)
|
||||
ON_MESSAGE(WM_OPENREGISTERDIALOG, OnOpenRegisterDialog)
|
||||
ON_MESSAGE(WM_OPENWEBCAMDIALOG, OnOpenVideoDialog)
|
||||
ON_WM_HELPINFO()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
@@ -1088,7 +1100,8 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
|
||||
case FILEMANAGER_DLG:
|
||||
{
|
||||
CFileManagerDlg *Dlg = (CFileManagerDlg*)p->hDlg;
|
||||
delete Dlg;
|
||||
::SendMessage(Dlg->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||
//delete Dlg; <20><><EFBFBD><EFBFBD><E2B4A6>
|
||||
break;
|
||||
}
|
||||
case REGISTER_DLG:
|
||||
@@ -1243,6 +1256,21 @@ LRESULT CMy2015RemoteDlg::OnOpenRegisterDialog(WPARAM wParam, LPARAM lParam)
|
||||
|
||||
ContextObject->v1 = REGISTER_DLG;
|
||||
ContextObject->hDlg = Dlg;
|
||||
EnterCriticalSection(&m_cs);
|
||||
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
||||
iter != v_RegDlg.end(); )
|
||||
{
|
||||
CRegisterDlg *cur = *iter;
|
||||
if (cur->m_bIsClosed)
|
||||
{
|
||||
delete cur;
|
||||
iter = v_RegDlg.erase(iter);
|
||||
}else{
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
v_RegDlg.push_back(Dlg);
|
||||
LeaveCriticalSection(&m_cs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1262,3 +1290,21 @@ LRESULT CMy2015RemoteDlg::OnOpenVideoDialog(WPARAM wParam, LPARAM lParam)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
BOOL CMy2015RemoteDlg::OnHelpInfo(HELPINFO* pHelpInfo)
|
||||
{
|
||||
MessageBox("Copyleft (c) FTU 2019", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOL CMy2015RemoteDlg::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return CDialogEx::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
@@ -101,4 +101,6 @@ public:
|
||||
afx_msg LRESULT OnOpenRegisterDialog(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnOpenServicesDialog(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnOpenVideoDialog(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
};
|
||||
|
||||
@@ -17,6 +17,7 @@ CAudioDlg::CAudioDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *Cont
|
||||
{
|
||||
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_AUDIO)); //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
||||
m_bIsWorking = TRUE;
|
||||
m_bThreadRun = FALSE;
|
||||
m_iocpServer = IOCPServer; //Ϊ<><CEAA><EFBFBD>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
m_ContextObject = ContextObject;
|
||||
m_hWorkThread = NULL;
|
||||
@@ -31,6 +32,9 @@ CAudioDlg::CAudioDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *Cont
|
||||
|
||||
CAudioDlg::~CAudioDlg()
|
||||
{
|
||||
m_bIsWorking = FALSE;
|
||||
while (m_bThreadRun)
|
||||
Sleep(50);
|
||||
}
|
||||
|
||||
void CAudioDlg::DoDataExchange(CDataExchange* pDX)
|
||||
@@ -64,6 +68,8 @@ BOOL CAudioDlg::OnInitDialog()
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD> <20>ж<EFBFBD>CheckBox
|
||||
m_hWorkThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WorkThread, (LPVOID)this, 0, NULL);
|
||||
|
||||
m_bThreadRun = m_hWorkThread ? TRUE : FALSE;
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
||||
}
|
||||
@@ -76,7 +82,7 @@ DWORD CAudioDlg::WorkThread(LPVOID lParam)
|
||||
{
|
||||
if (!This->m_bSend)
|
||||
{
|
||||
Sleep(1000);
|
||||
Sleep(50);
|
||||
continue;
|
||||
}
|
||||
DWORD dwBufferSize = 0;
|
||||
@@ -85,6 +91,8 @@ DWORD CAudioDlg::WorkThread(LPVOID lParam)
|
||||
if (szBuffer != NULL && dwBufferSize > 0)
|
||||
This->m_iocpServer->OnClientPreSending(This->m_ContextObject, szBuffer, dwBufferSize); //û<><C3BB><EFBFBD><EFBFBD>Ϣͷ
|
||||
}
|
||||
This->m_bThreadRun = FALSE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ public:
|
||||
CString m_strIPAddress;
|
||||
DWORD m_nTotalRecvBytes;
|
||||
BOOL m_bIsWorking;
|
||||
BOOL m_bThreadRun;
|
||||
HANDLE m_hWorkThread;
|
||||
CAudio m_AudioObject;
|
||||
|
||||
|
||||
@@ -80,7 +80,10 @@ CFileManagerDlg::CFileManagerDlg(CWnd* pParent, CIOCPServer* pIOCPServer, Client
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
memset(m_bRemoteDriveList, 0, sizeof(m_bRemoteDriveList));
|
||||
memcpy(m_bRemoteDriveList, m_pContext->m_DeCompressionBuffer.GetBuffer(1), m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1);
|
||||
PBYTE pSrc = m_pContext->m_DeCompressionBuffer.GetBuffer(1);
|
||||
int length = m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1;
|
||||
if (length > 0)
|
||||
memcpy(m_bRemoteDriveList, pSrc, length);
|
||||
|
||||
m_nTransferMode = TRANSFER_MODE_NORMAL;
|
||||
m_nOperatingFileLength = 0;
|
||||
@@ -305,7 +308,6 @@ void CFileManagerDlg::OnSize(UINT nType, int cx, int cy)
|
||||
GetDlgItem(IDC_STATIC_REMOTE)->MoveWindow(20, cy / 2, 25, 20);
|
||||
GetDlgItem(IDC_REMOTE_PATH)->MoveWindow(53, (cy / 2) - 4 , 210, 12);
|
||||
|
||||
|
||||
GetClientRect(&rect);
|
||||
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_wndToolBar_Local.MoveWindow(268, 0, rect.right - 268, 48);
|
||||
@@ -350,7 +352,6 @@ void CFileManagerDlg::FixedLocalDriveList()
|
||||
AmntMB = 0;
|
||||
FreeMB = 0;
|
||||
}
|
||||
|
||||
|
||||
int nItem = m_list_local.InsertItem(i, pDrive, GetIconIndex(pDrive, GetFileAttributes(pDrive)));
|
||||
m_list_local.SetItemData(nItem, 1);
|
||||
@@ -407,9 +408,6 @@ void CFileManagerDlg::FixedLocalFileList(CString directory)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// <20>õ<EFBFBD><C3B5><EFBFBD>Ŀ¼
|
||||
if (directory == "..")
|
||||
{
|
||||
@@ -423,7 +421,6 @@ void CFileManagerDlg::FixedLocalFileList(CString directory)
|
||||
m_Local_Path += "\\";
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>Ŀ¼,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
if (m_Local_Path.GetLength() == 0)
|
||||
{
|
||||
@@ -501,7 +498,6 @@ void CFileManagerDlg::DropItemOnList(CListCtrl* pDragList, CListCtrl* pDropList)
|
||||
return;
|
||||
} //EO if(pDragList...
|
||||
|
||||
|
||||
pDropList->SetItemState(m_nDropIndex, 0, LVIS_DROPHILITED);
|
||||
|
||||
if ((CWnd *)pDropList == &m_list_local)
|
||||
@@ -519,48 +515,6 @@ void CFileManagerDlg::DropItemOnList(CListCtrl* pDragList, CListCtrl* pDropList)
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
m_nDropIndex = -1;
|
||||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>벻Ҫ<EBB2BB>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
// if(pDragList->GetSelectedCount() == 1)
|
||||
// {
|
||||
// char szLabel[MAX_PATH];
|
||||
// LVITEM lviT;
|
||||
// ZeroMemory(&lviT, sizeof (LVITEM)); //allocate and clear memory space for LV_ITEM
|
||||
// lviT.iItem = m_nDragIndex;
|
||||
// lviT.mask = LVIF_IMAGE | LVIF_TEXT;
|
||||
// lviT.pszText = szLabel;
|
||||
// lviT.cchTextMax = MAX_PATH;
|
||||
// pDragList->GetItem (&lviT);
|
||||
//
|
||||
// // Select the new item we just inserted
|
||||
// int iItem = (m_nDropIndex == -1) ? pDropList->GetItemCount () : m_nDropIndex;
|
||||
//
|
||||
// pDropList->InsertItem(iItem, szLabel, lviT.iImage);
|
||||
//
|
||||
// pDropList->SetItemState (iItem, LVIS_SELECTED, LVIS_SELECTED);
|
||||
// }
|
||||
// else //more than 1 item is being dropped
|
||||
// {
|
||||
// POSITION pos = pDragList->GetFirstSelectedItemPosition(); //iterator for the CListCtrl
|
||||
// while(pos) //so long as we have a valid POSITION, we keep iterating
|
||||
// {
|
||||
// m_nDragIndex = pDragList->GetNextSelectedItem(pos);
|
||||
// m_nDropIndex = (m_nDropIndex == -1) ? pDropList->GetItemCount() : m_nDropIndex;
|
||||
//
|
||||
// char szLabel[MAX_PATH];
|
||||
// LVITEM lviT;
|
||||
// ZeroMemory(&lviT, sizeof (LVITEM)); //allocate and clear memory space for LV_ITEM
|
||||
// lviT.iItem = m_nDragIndex;
|
||||
// lviT.mask = LVIF_IMAGE | LVIF_TEXT;
|
||||
// lviT.pszText = szLabel;
|
||||
// lviT.cchTextMax = MAX_PATH;
|
||||
// pDragList->GetItem (&lviT);
|
||||
//
|
||||
// pDropList->InsertItem(m_nDropIndex, szLabel, lviT.iImage);
|
||||
// pDropList->SetItemState(m_nDropIndex, LVIS_SELECTED, LVIS_SELECTED);
|
||||
// m_nDropIndex ++;
|
||||
// //Save the pointer to the new item in our CList
|
||||
// } //EO while(pos) -- at this point we have deleted the moving items and stored them in memory
|
||||
// }
|
||||
}
|
||||
|
||||
// The system calls this to obtain the cursor to display while the user drags
|
||||
@@ -613,7 +567,6 @@ void CFileManagerDlg::OnBegindragListRemote(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
if (!m_list_local.GetItemText(m_nDragIndex, 0).Compare(".."))
|
||||
return;
|
||||
|
||||
|
||||
//We will call delete later (in LButtonUp) to clean this up
|
||||
|
||||
if(m_list_remote.GetSelectedCount() > 1) //more than 1 item in list is selected
|
||||
@@ -799,7 +752,6 @@ BOOL CFileManagerDlg::PreTranslateMessage(MSG* pMsg)
|
||||
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʺϰ<CABA><CFB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<F2B4B0BF>
|
||||
*/
|
||||
|
||||
|
||||
if(m_wndToolBar_Local.IsWindowVisible())
|
||||
{
|
||||
CWnd* pWndParent = m_wndToolBar_Local.GetParent();
|
||||
@@ -813,6 +765,7 @@ BOOL CFileManagerDlg::PreTranslateMessage(MSG* pMsg)
|
||||
|
||||
return CDialog::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnTimer(UINT nIDEvent)
|
||||
{
|
||||
// TODO: Add your message handler code here and/or call default
|
||||
@@ -837,14 +790,13 @@ void CFileManagerDlg::FixedRemoteDriveList()
|
||||
m_list_remote.InsertColumn(2, "<EFBFBD>ܴ<EFBFBD>С", LVCFMT_LEFT, 100);
|
||||
m_list_remote.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD>ÿռ<EFBFBD>", LVCFMT_LEFT, 115);
|
||||
|
||||
|
||||
char *pDrive = NULL;
|
||||
pDrive = (char *)m_bRemoteDriveList;
|
||||
|
||||
unsigned long AmntMB = 0; // <20>ܴ<EFBFBD>С
|
||||
unsigned long FreeMB = 0; // ʣ<><CAA3><EFBFBD>ռ<EFBFBD>
|
||||
char VolName[MAX_PATH];
|
||||
char FileSystem[MAX_PATH];
|
||||
//char VolName[MAX_PATH];
|
||||
//char FileSystem[MAX_PATH];
|
||||
|
||||
/*
|
||||
6 DRIVE_FLOPPY
|
||||
@@ -913,7 +865,6 @@ void CFileManagerDlg::FixedRemoteDriveList()
|
||||
m_list_remote.SetItemText(nItem, 1, lpFileSystemName);
|
||||
}
|
||||
|
||||
|
||||
i += lstrlen(pDrive + i) + 1;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>Զ<EFBFBD>̵<EFBFBD>ǰ·<C7B0><C2B7>
|
||||
@@ -956,6 +907,7 @@ CString CFileManagerDlg::GetParentDirectory(CString strPath)
|
||||
strCurPath += "\\";
|
||||
return strCurPath;
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnReceiveComplete()
|
||||
{
|
||||
switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
|
||||
@@ -1054,6 +1006,7 @@ void CFileManagerDlg::GetRemoteFileList(CString directory)
|
||||
m_list_remote.EnableWindow(FALSE);
|
||||
m_ProgressCtrl->SetPos(0);
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnDblclkListRemote(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
if (m_list_remote.GetSelectedCount() == 0 || m_list_remote.GetItemData(m_list_remote.GetSelectionMark()) != 1)
|
||||
@@ -1080,7 +1033,6 @@ void CFileManagerDlg::FixedRemoteFileList(BYTE *pbBuffer, DWORD dwBufferLen)
|
||||
m_list_remote.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 100);
|
||||
m_list_remote.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 115);
|
||||
|
||||
|
||||
int nItemIndex = 0;
|
||||
m_list_remote.SetItemData
|
||||
(
|
||||
@@ -1188,7 +1140,6 @@ BOOL CFileManagerDlg::OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
|
||||
if (GetRoutingFrame() != NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
//<2F><>ANSI and UNICODE<44><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
||||
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
|
||||
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
|
||||
@@ -1368,6 +1319,7 @@ void CFileManagerDlg::OnUpdateRemoteStop(CCmdUI* pCmdUI)
|
||||
// TODO: Add your command update UI handler code here
|
||||
pCmdUI->Enable(!m_list_remote.IsWindowEnabled() && !m_bIsUpload);
|
||||
}
|
||||
|
||||
bool CFileManagerDlg::FixedUploadDirectory(LPCTSTR lpPathName)
|
||||
{
|
||||
char lpszFilter[MAX_PATH];
|
||||
@@ -1417,6 +1369,7 @@ void CFileManagerDlg::EnableControl(BOOL bEnable)
|
||||
m_Local_Directory_ComboBox.EnableWindow(bEnable);
|
||||
m_Remote_Directory_ComboBox.EnableWindow(bEnable);
|
||||
}
|
||||
|
||||
void CFileManagerDlg::OnLocalCopy()
|
||||
{
|
||||
m_bIsUpload = true;
|
||||
@@ -1489,7 +1442,6 @@ void CFileManagerDlg::OnRemoteCopy()
|
||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BOOL CFileManagerDlg::SendDownloadJob()
|
||||
{
|
||||
|
||||
if (m_Remote_Download_Job.IsEmpty())
|
||||
return FALSE;
|
||||
|
||||
@@ -1637,14 +1589,12 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
WIN32_FIND_DATA FindFileData;
|
||||
HANDLE hFind = FindFirstFile(m_strReceiveLocalFile.GetBuffer(0), &FindFileData);
|
||||
|
||||
|
||||
if (hFind != INVALID_HANDLE_VALUE
|
||||
&& m_nTransferMode != TRANSFER_MODE_OVERWRITE_ALL
|
||||
&& m_nTransferMode != TRANSFER_MODE_ADDITION_ALL
|
||||
&& m_nTransferMode != TRANSFER_MODE_JUMP_ALL
|
||||
)
|
||||
{
|
||||
|
||||
CFileTransferModeDlg dlg(this);
|
||||
dlg.m_strFileName = m_strReceiveLocalFile;
|
||||
switch (dlg.DoModal())
|
||||
@@ -1724,7 +1674,6 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
memset(bToken + 1, 0, 8);
|
||||
// <20><><EFBFBD>´<EFBFBD><C2B4><EFBFBD>
|
||||
dwCreationDisposition = CREATE_ALWAYS;
|
||||
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ƶ<EFBFBD>-1
|
||||
else if (nTransferMode == TRANSFER_MODE_JUMP)
|
||||
@@ -1744,7 +1693,6 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
}
|
||||
FindClose(hFind);
|
||||
|
||||
|
||||
HANDLE hFile =
|
||||
CreateFile
|
||||
(
|
||||
@@ -1775,11 +1723,10 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
|
||||
}
|
||||
}
|
||||
// д<><D0B4><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// д<><D0B4><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
void CFileManagerDlg::WriteLocalRecvFile()
|
||||
{
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BYTE *pData;
|
||||
DWORD dwBytesToWrite;
|
||||
@@ -1796,7 +1743,6 @@ void CFileManagerDlg::WriteLocalRecvFile()
|
||||
LONG dwOffsetHigh = pFileSize->dwSizeHigh;
|
||||
LONG dwOffsetLow = pFileSize->dwSizeLow;
|
||||
|
||||
|
||||
dwBytesToWrite = m_pContext->m_DeCompressionBuffer.GetBufferLen() - nHeadLength;
|
||||
|
||||
HANDLE hFile =
|
||||
@@ -1878,7 +1824,6 @@ void CFileManagerDlg::EndLocalRecvFile()
|
||||
|
||||
void CFileManagerDlg::EndLocalUploadFile()
|
||||
{
|
||||
|
||||
m_nCounter = 0;
|
||||
m_strOperatingFile = "";
|
||||
m_nOperatingFileLength = 0;
|
||||
@@ -1899,6 +1844,7 @@ void CFileManagerDlg::EndLocalUploadFile()
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void CFileManagerDlg::EndRemoteDeleteFile()
|
||||
{
|
||||
if (m_Remote_Delete_Job.IsEmpty() || m_bIsStop)
|
||||
@@ -1944,7 +1890,6 @@ void CFileManagerDlg::ShowProgress()
|
||||
else
|
||||
lpDirection = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>";
|
||||
|
||||
|
||||
if ((int)m_nCounter == -1)
|
||||
{
|
||||
m_nCounter = m_nOperatingFileLength;
|
||||
@@ -2107,14 +2052,12 @@ void CFileManagerDlg::SendFileData()
|
||||
|
||||
ShowProgress();
|
||||
|
||||
|
||||
if (m_nCounter == m_nOperatingFileLength || pFileSize->dwSizeLow == -1 || m_bIsStop)
|
||||
{
|
||||
EndLocalUploadFile();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
HANDLE hFile;
|
||||
hFile = CreateFile(m_strOperatingFile.GetBuffer(0), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
@@ -2447,7 +2390,6 @@ void CFileManagerDlg::OnRclickListRemote(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
else
|
||||
pM->EnableMenuItem(nRemoteOpenMenuIndex, MF_BYPOSITION | MF_GRAYED);
|
||||
|
||||
|
||||
pM->EnableMenuItem(IDM_REFRESH, MF_BYCOMMAND | MF_ENABLED);
|
||||
pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, this);
|
||||
*pResult = 0;
|
||||
@@ -2565,4 +2507,4 @@ bool CFileManagerDlg::MakeSureDirectoryPathExists(LPCTSTR pszDirPath)
|
||||
|
||||
free(pszDirCopy);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,12 +29,15 @@ IMPLEMENT_DYNAMIC(CRegisterDlg, CDialog)
|
||||
CRegisterDlg::CRegisterDlg(CWnd* pParent,IOCPServer* IOCPServer, CONTEXT_OBJECT* ContextObject)
|
||||
: CDialog(CRegisterDlg::IDD, pParent)
|
||||
{
|
||||
m_bIsClosed = FALSE;
|
||||
m_bIsWorking = FALSE;
|
||||
m_iocpServer = IOCPServer;
|
||||
m_ContextObject = ContextObject;
|
||||
}
|
||||
|
||||
CRegisterDlg::~CRegisterDlg()
|
||||
{
|
||||
printf("~CRegisterDlg \n");
|
||||
}
|
||||
|
||||
void CRegisterDlg::DoDataExchange(CDataExchange* pDX)
|
||||
@@ -59,6 +62,14 @@ BOOL CRegisterDlg::OnInitDialog()
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
CString str;
|
||||
sockaddr_in ClientAddr;
|
||||
memset(&ClientAddr, 0, sizeof(ClientAddr));
|
||||
int ClientAddrLen = sizeof(ClientAddr);
|
||||
BOOL bResult = getpeername(m_ContextObject->sClientSocket, (SOCKADDR*)&ClientAddr, &ClientAddrLen);
|
||||
|
||||
str.Format("%s - ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "");
|
||||
SetWindowText(str);
|
||||
|
||||
m_ImageListTree.Create(18, 18, ILC_COLOR16,10, 0); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC>ϵ<EFBFBD>ͼ<EFBFBD><CDBC>
|
||||
|
||||
@@ -94,15 +105,14 @@ BOOL CRegisterDlg::OnInitDialog()
|
||||
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
||||
}
|
||||
|
||||
|
||||
void CRegisterDlg::OnClose()
|
||||
{
|
||||
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
||||
m_ContextObject->v1 = 0;
|
||||
CancelIo((HANDLE)m_ContextObject->sClientSocket);
|
||||
closesocket(m_ContextObject->sClientSocket);
|
||||
CDialog::OnClose();
|
||||
delete this;
|
||||
m_bIsClosed = TRUE;
|
||||
//delete this;
|
||||
}
|
||||
|
||||
|
||||
@@ -161,7 +171,6 @@ CString CRegisterDlg::GetFullPath(HTREEITEM hCurrent)
|
||||
strTemp += "\\";
|
||||
strReturn = strTemp + strReturn;
|
||||
hCurrent = m_Tree.GetParentItem(hCurrent); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}
|
||||
return strReturn;
|
||||
}
|
||||
@@ -171,7 +180,6 @@ char CRegisterDlg::GetFatherPath(CString& strFullPath)
|
||||
char bToken;
|
||||
if(!strFullPath.Find("HKEY_CLASSES_ROOT")) //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
|
||||
bToken=MHKEY_CLASSES_ROOT;
|
||||
strFullPath.Delete(0,sizeof("HKEY_CLASSES_ROOT"));
|
||||
}else if(!strFullPath.Find("HKEY_CURRENT_USER"))
|
||||
@@ -201,25 +209,24 @@ char CRegisterDlg::GetFatherPath(CString& strFullPath)
|
||||
|
||||
void CRegisterDlg::OnReceiveComplete(void)
|
||||
{
|
||||
m_bIsWorking = TRUE;
|
||||
switch (m_ContextObject->InDeCompressedBuffer.GetBuffer(0)[0])
|
||||
{
|
||||
|
||||
case TOKEN_REG_PATH:
|
||||
{
|
||||
AddPath((char*)(m_ContextObject->InDeCompressedBuffer.GetBuffer(1)));
|
||||
break;
|
||||
}
|
||||
|
||||
case TOKEN_REG_KEY:
|
||||
{
|
||||
AddKey((char*)(m_ContextObject->InDeCompressedBuffer.GetBuffer(1)));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
m_bIsWorking = FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -238,9 +245,10 @@ void CRegisterDlg::AddPath(char* szBuffer)
|
||||
memcpy((void*)&msg,szBuffer,msgsize);
|
||||
DWORD size =msg.size;
|
||||
int count=msg.count;
|
||||
|
||||
if(size>0&&count>0){ //һ<>㱣<EFBFBD><E3B1A3><EFBFBD><EFBFBD>ʩ
|
||||
for(int i=0;i<count;i++){
|
||||
if (m_bIsClosed)
|
||||
break;
|
||||
char* szKeyName=szBuffer+size*i+msgsize;
|
||||
m_Tree.InsertItem(szKeyName,1,1,m_hSelectedItem,0);//<2F><><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_Tree.Expand(m_hSelectedItem,TVE_EXPAND);
|
||||
@@ -258,9 +266,11 @@ void CRegisterDlg::AddKey(char* szBuffer)
|
||||
if(szBuffer==NULL) return;
|
||||
REGMSG msg;
|
||||
memcpy((void*)&msg,szBuffer,sizeof(msg));
|
||||
char* szTemp=szBuffer+sizeof(msg);
|
||||
char* szTemp=szBuffer+sizeof(msg);
|
||||
for(int i=0;i<msg.count;i++)
|
||||
{
|
||||
if (m_bIsClosed)
|
||||
break;
|
||||
BYTE Type=szTemp[0]; //<2F><><EFBFBD><EFBFBD>
|
||||
szTemp+=sizeof(BYTE);
|
||||
char* szValueName=szTemp; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
@@ -22,6 +22,8 @@ protected:
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
BOOL m_bIsClosed; // <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
|
||||
BOOL m_bIsWorking;// <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
CTreeCtrl m_Tree;
|
||||
CImageList m_ImageListTree; //<2F><><EFBFBD>ؼ<EFBFBD><D8BC>ϵ<EFBFBD>ͼ<EFBFBD><CDBC>
|
||||
CListCtrl m_ControlList;
|
||||
|
||||
@@ -131,16 +131,26 @@ BOOL CShellDlg::PreTranslateMessage(MSG* pMsg)
|
||||
if (pMsg->wParam == VK_RETURN && pMsg->hwnd == m_Edit.m_hWnd)
|
||||
{
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
int iLength = m_Edit.GetWindowTextLength(); //Hello>dir 3
|
||||
int iLength = m_Edit.GetWindowTextLength();
|
||||
CString str;
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_Edit.GetWindowText(str);//dir\r\n
|
||||
m_Edit.GetWindowText(str);
|
||||
//<2F><><EFBFBD>뻻<EFBFBD>з<EFBFBD>
|
||||
str += "\r\n";
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ټ<EFBFBD><D9BC><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_iocpServer->OnClientPreSending(m_ContextObject, (LPBYTE)str.GetBuffer(0) + m_nCurSel, str.GetLength() - m_nCurSel);
|
||||
m_nCurSel = m_Edit.GetWindowTextLength(); //<2F><><EFBFBD>¶<EFBFBD>λm_nCurSel m_nCurSel = 3
|
||||
//Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD>ȥ
|
||||
LPBYTE pSrc = (LPBYTE)str.GetBuffer(0) + m_nCurSel;
|
||||
#ifdef _DEBUG
|
||||
OutputDebugStringA("[Shell]=> ");
|
||||
OutputDebugStringA((char*)pSrc);
|
||||
#endif
|
||||
int length = str.GetLength() - m_nCurSel;
|
||||
m_iocpServer->OnClientPreSending(m_ContextObject, pSrc, length);
|
||||
m_nCurSel = m_Edit.GetWindowTextLength();
|
||||
if (0 == strcmp((char*)pSrc, "exit\r\n"))
|
||||
{
|
||||
ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>VK_BACK
|
||||
if (pMsg->wParam == VK_BACK && pMsg->hwnd == m_Edit.m_hWnd)
|
||||
@@ -148,9 +158,9 @@ BOOL CShellDlg::PreTranslateMessage(MSG* pMsg)
|
||||
if (m_Edit.GetWindowTextLength() <= m_nReceiveLength)
|
||||
return true;
|
||||
}
|
||||
// ʾ<><CABE><EFBFBD><EFBFBD>
|
||||
//dir\r\n 5
|
||||
//hello\r\n 7
|
||||
//
|
||||
}
|
||||
|
||||
return CDialog::PreTranslateMessage(pMsg);
|
||||
|
||||
@@ -62,8 +62,10 @@ BOOL CSystemDlg::OnInitDialog()
|
||||
sockaddr_in ClientAddr;
|
||||
memset(&ClientAddr, 0, sizeof(ClientAddr));
|
||||
int iSockAddrLength = sizeof(ClientAddr);
|
||||
BOOL bResult = getpeername(m_ContextObject->sClientSocket, (SOCKADDR*)&ClientAddr, &iSockAddrLength); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ӵ<EFBFBD>ip
|
||||
str.Format("%s - <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "");
|
||||
BOOL bResult = getpeername(m_ContextObject->sClientSocket, (SOCKADDR*)&ClientAddr, &iSockAddrLength);
|
||||
m_bHow==TOKEN_PSLIST
|
||||
? str.Format("%s - <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "")
|
||||
:str.Format("%s - <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "");
|
||||
SetWindowText(str);//<2F><><EFBFBD>öԻ<C3B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
m_ControlList.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
#include "IOCPServer.h"
|
||||
|
||||
typedef IOCPServer CIOCPServer;
|
||||
#define CIOCPServer IOCPServer
|
||||
|
||||
typedef CONTEXT_OBJECT ClientContext;
|
||||
#define ClientContext CONTEXT_OBJECT
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user