fix: showing the wrong host quantity in status bar
This commit is contained in:
@@ -225,3 +225,9 @@ TestRun在写入开机自启动项时先提升权限,以防止因权限不足
|
|||||||
2.增加了使用VLD的操作方法,详见"server\2015Remote\stdafx.h"。
|
2.增加了使用VLD的操作方法,详见"server\2015Remote\stdafx.h"。
|
||||||
注意:自VS2019开始,不支持XP系统了(微软已经声明这个变更)。如果有需要在XP系统进行监控的需求,推荐使用"2015Remote.sln"。
|
注意:自VS2019开始,不支持XP系统了(微软已经声明这个变更)。如果有需要在XP系统进行监控的需求,推荐使用"2015Remote.sln"。
|
||||||
如果使用VS2015编译,需将WindowsTargetPlatformVersion修改为8.1,将PlatformToolset修改为v140_xp。
|
如果使用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
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent): CDialogEx(CMy2015RemoteDlg::I
|
|||||||
m_bmOnline[0].LoadBitmap(IDB_BITMAP_ONLINE);
|
m_bmOnline[0].LoadBitmap(IDB_BITMAP_ONLINE);
|
||||||
m_bmOnline[1].LoadBitmap(IDB_BITMAP_ONLINE);
|
m_bmOnline[1].LoadBitmap(IDB_BITMAP_ONLINE);
|
||||||
|
|
||||||
m_iCount = 0;
|
|
||||||
InitializeCriticalSection(&m_cs);
|
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.SetItemText(i,ONLINELIST_PING,strPing);
|
||||||
|
|
||||||
m_CList_Online.SetItemData(i,(DWORD_PTR)ContextObject);
|
m_CList_Online.SetItemData(i,(DWORD_PTR)ContextObject);
|
||||||
m_iCount++;
|
|
||||||
|
|
||||||
ShowMessage(true,strIP+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
ShowMessage(true,strIP+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
@@ -356,7 +354,9 @@ VOID CMy2015RemoteDlg::ShowMessage(BOOL bOk, CString strMsg)
|
|||||||
|
|
||||||
CString strStatusMsg;
|
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);
|
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>
|
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;
|
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>
|
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;
|
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>
|
m_CList_Online.SetColumnWidth(i,(lenth)); //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LeaveCriticalSection(&m_cs);
|
||||||
|
|
||||||
if (m_CList_Message.m_hWnd!=NULL)
|
if (m_CList_Message.m_hWnd!=NULL)
|
||||||
{
|
{
|
||||||
@@ -549,12 +551,14 @@ void CMy2015RemoteDlg::OnClose()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
BYTE bToken = CLIENT_EXIT_WITH_SERVER ? COMMAND_BYE : SERVER_EXIT;
|
BYTE bToken = CLIENT_EXIT_WITH_SERVER ? COMMAND_BYE : SERVER_EXIT;
|
||||||
|
EnterCriticalSection(&m_cs);
|
||||||
int n = m_CList_Online.GetItemCount();
|
int n = m_CList_Online.GetItemCount();
|
||||||
for(int Pos = 0; Pos < n; ++Pos)
|
for(int Pos = 0; Pos < n; ++Pos)
|
||||||
{
|
{
|
||||||
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(Pos);
|
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(Pos);
|
||||||
m_iocpServer->OnClientPreSending(ContextObject, &bToken, sizeof(BYTE));
|
m_iocpServer->OnClientPreSending(ContextObject, &bToken, sizeof(BYTE));
|
||||||
}
|
}
|
||||||
|
LeaveCriticalSection(&m_cs);
|
||||||
Sleep(200);
|
Sleep(200);
|
||||||
|
|
||||||
EnterCriticalSection(&m_cs);
|
EnterCriticalSection(&m_cs);
|
||||||
@@ -608,7 +612,10 @@ void CMy2015RemoteDlg::OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult)
|
|||||||
GetCursorPos(&Point);
|
GetCursorPos(&Point);
|
||||||
|
|
||||||
int iCount = SubMenu->GetMenuItemCount();
|
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)
|
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
|
BYTE bToken = COMMAND_BYE; //<2F>ض˷<D8B6><CBB7><EFBFBD>һ<EFBFBD><D2BB>COMMAND_SYSTEM
|
||||||
SendSelectedCommand(&bToken, sizeof(BYTE)); //Context PreSending PostSending
|
SendSelectedCommand(&bToken, sizeof(BYTE)); //Context PreSending PostSending
|
||||||
|
|
||||||
|
EnterCriticalSection(&m_cs);
|
||||||
int iCount = m_CList_Online.GetSelectedCount();
|
int iCount = m_CList_Online.GetSelectedCount();
|
||||||
|
|
||||||
for (int i=0;i<iCount;++i)
|
for (int i=0;i<iCount;++i)
|
||||||
{
|
{
|
||||||
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
|
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
|
||||||
@@ -651,6 +658,7 @@ void CMy2015RemoteDlg::OnOnlineDelete()
|
|||||||
strIP+="<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
strIP+="<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||||
ShowMessage(true,strIP);
|
ShowMessage(true,strIP);
|
||||||
}
|
}
|
||||||
|
LeaveCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID CMy2015RemoteDlg::OnOnlineCmdManager()
|
VOID CMy2015RemoteDlg::OnOnlineCmdManager()
|
||||||
@@ -728,6 +736,7 @@ void CMy2015RemoteDlg::OnOnlineBuildClient()
|
|||||||
|
|
||||||
VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
|
VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
|
||||||
{
|
{
|
||||||
|
EnterCriticalSection(&m_cs);
|
||||||
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
|
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
|
||||||
while(Pos)
|
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>
|
// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||||
m_iocpServer->OnClientPreSending(ContextObject,szBuffer, ulLength);
|
m_iocpServer->OnClientPreSending(ContextObject,szBuffer, ulLength);
|
||||||
}
|
}
|
||||||
|
LeaveCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD>Bar
|
//<2F><><EFBFBD><EFBFBD>Bar
|
||||||
@@ -1022,7 +1032,6 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
ip = m_CList_Online.GetItemText(i, ONLINELIST_IP);
|
ip = m_CList_Online.GetItemText(i, ONLINELIST_IP);
|
||||||
m_CList_Online.DeleteItem(i);
|
m_CList_Online.DeleteItem(i);
|
||||||
m_iCount--;
|
|
||||||
ShowMessage(true, ip + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
ShowMessage(true, ip + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
CRITICAL_SECTION m_cs;
|
CRITICAL_SECTION m_cs;
|
||||||
BOOL isClosed;
|
BOOL isClosed;
|
||||||
UINT m_iCount;
|
|
||||||
CBitmap m_bmOnline[2];
|
CBitmap m_bmOnline[2];
|
||||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||||
afx_msg void OnClose();
|
afx_msg void OnClose();
|
||||||
|
|||||||
Reference in New Issue
Block a user