fix: showing the wrong host quantity in status bar

This commit is contained in:
yuanyuanxiang
2024-12-26 21:58:44 +08:00
parent 0c0c24534b
commit e69f18d576
3 changed files with 22 additions and 7 deletions

View File

@@ -225,3 +225,9 @@ TestRun在写入开机自启动项时先提升权限以防止因权限不足
2.增加了使用VLD的操作方法详见"server\2015Remote\stdafx.h"。
注意自VS2019开始不支持XP系统了微软已经声明这个变更。如果有需要在XP系统进行监控的需求推荐使用"2015Remote.sln"。
如果使用VS2015编译需将WindowsTargetPlatformVersion修改为8.1将PlatformToolset修改为v140_xp。
2024.12.26
解决主控程序概率性崩溃的问题,增强主控程序运行的稳定性。本人未进行广泛测试,不保证彻底根治,但稳定性有明显改观。
fix: client threads number excceeding bug
fix: #19 the CBuffer causing server crash
fix: showing the wrong host quantity in status bar

View File

@@ -122,7 +122,6 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent): CDialogEx(CMy2015RemoteDlg::I
m_bmOnline[0].LoadBitmap(IDB_BITMAP_ONLINE);
m_bmOnline[1].LoadBitmap(IDB_BITMAP_ONLINE);
m_iCount = 0;
InitializeCriticalSection(&m_cs);
}
@@ -337,7 +336,6 @@ VOID CMy2015RemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName
m_CList_Online.SetItemText(i,ONLINELIST_PING,strPing);
m_CList_Online.SetItemData(i,(DWORD_PTR)ContextObject);
m_iCount++;
ShowMessage(true,strIP+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
LeaveCriticalSection(&m_cs);
@@ -356,7 +354,9 @@ VOID CMy2015RemoteDlg::ShowMessage(BOOL bOk, CString strMsg)
CString strStatusMsg;
m_iCount=(m_iCount<=0?0:m_iCount); //<2F><>ֹiCount <20><>-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EnterCriticalSection(&m_cs);
int m_iCount = m_CList_Online.GetItemCount();
LeaveCriticalSection(&m_cs);
strStatusMsg.Format("<EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",m_iCount);
m_StatusBar.SetPaneText(0,strStatusMsg); //<2F><>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
@@ -479,6 +479,7 @@ void CMy2015RemoteDlg::OnSize(UINT nType, int cx, int cy)
{
return;
}
EnterCriticalSection(&m_cs);
if (m_CList_Online.m_hWnd!=NULL) //<2F><><EFBFBD>ؼ<EFBFBD>Ҳ<EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>
{
CRect rc;
@@ -496,6 +497,7 @@ void CMy2015RemoteDlg::OnSize(UINT nType, int cx, int cy)
m_CList_Online.SetColumnWidth(i,(lenth)); //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
}
}
LeaveCriticalSection(&m_cs);
if (m_CList_Message.m_hWnd!=NULL)
{
@@ -549,12 +551,14 @@ void CMy2015RemoteDlg::OnClose()
#endif
BYTE bToken = CLIENT_EXIT_WITH_SERVER ? COMMAND_BYE : SERVER_EXIT;
EnterCriticalSection(&m_cs);
int n = m_CList_Online.GetItemCount();
for(int Pos = 0; Pos < n; ++Pos)
{
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(Pos);
m_iocpServer->OnClientPreSending(ContextObject, &bToken, sizeof(BYTE));
}
LeaveCriticalSection(&m_cs);
Sleep(200);
EnterCriticalSection(&m_cs);
@@ -608,7 +612,10 @@ void CMy2015RemoteDlg::OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult)
GetCursorPos(&Point);
int iCount = SubMenu->GetMenuItemCount();
if (m_CList_Online.GetSelectedCount() == 0) //<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1>
EnterCriticalSection(&m_cs);
int n = m_CList_Online.GetSelectedCount();
LeaveCriticalSection(&m_cs);
if (n == 0) //<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1>
{
for (int i = 0;i<iCount;++i)
{
@@ -640,8 +647,8 @@ void CMy2015RemoteDlg::OnOnlineDelete()
BYTE bToken = COMMAND_BYE; //<2F>򱻿ض˷<D8B6><CBB7><EFBFBD>һ<EFBFBD><D2BB>COMMAND_SYSTEM
SendSelectedCommand(&bToken, sizeof(BYTE)); //Context PreSending PostSending
EnterCriticalSection(&m_cs);
int iCount = m_CList_Online.GetSelectedCount();
for (int i=0;i<iCount;++i)
{
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
@@ -651,6 +658,7 @@ void CMy2015RemoteDlg::OnOnlineDelete()
strIP+="<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
ShowMessage(true,strIP);
}
LeaveCriticalSection(&m_cs);
}
VOID CMy2015RemoteDlg::OnOnlineCmdManager()
@@ -728,6 +736,7 @@ void CMy2015RemoteDlg::OnOnlineBuildClient()
VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
{
EnterCriticalSection(&m_cs);
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
while(Pos)
{
@@ -737,6 +746,7 @@ VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ݰ<EFBFBD>
m_iocpServer->OnClientPreSending(ContextObject,szBuffer, ulLength);
}
LeaveCriticalSection(&m_cs);
}
//<2F><><EFBFBD><EFBFBD>Bar
@@ -1022,7 +1032,6 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
{
ip = m_CList_Online.GetItemText(i, ONLINELIST_IP);
m_CList_Online.DeleteItem(i);
m_iCount--;
ShowMessage(true, ip + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
}

View File

@@ -82,7 +82,7 @@ public:
#endif
CRITICAL_SECTION m_cs;
BOOL isClosed;
UINT m_iCount;
CBitmap m_bmOnline[2];
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnClose();