mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-24 00:03:10 +08:00
Fix AudioManager bug and remove struct dlgInfo
This commit is contained in:
@@ -20,6 +20,8 @@ CAudioManager::CAudioManager(IOCPClient* ClientObject, int n, void* user):CManag
|
|||||||
m_AudioObject = NULL;
|
m_AudioObject = NULL;
|
||||||
|
|
||||||
if (Initialize()==FALSE) {
|
if (Initialize()==FALSE) {
|
||||||
|
szPacket = NULL;
|
||||||
|
m_hWorkThread = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +54,7 @@ VOID CAudioManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
|
|||||||
DWORD CAudioManager::WorkThread(LPVOID lParam) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
DWORD CAudioManager::WorkThread(LPVOID lParam) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
CAudioManager *This = (CAudioManager *)lParam;
|
CAudioManager *This = (CAudioManager *)lParam;
|
||||||
while (This->m_bIsWorking) {
|
while (This->m_bIsWorking && !This->g_bExit) {
|
||||||
if(!This->SendRecordBuffer())
|
if(!This->SendRecordBuffer())
|
||||||
Sleep(50);
|
Sleep(50);
|
||||||
}
|
}
|
||||||
@@ -87,6 +89,7 @@ BOOL CAudioManager::SendRecordBuffer()
|
|||||||
CAudioManager::~CAudioManager()
|
CAudioManager::~CAudioManager()
|
||||||
{
|
{
|
||||||
m_bIsWorking = FALSE; //<2F>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>״̬Ϊ<CCAC><CEAA>
|
m_bIsWorking = FALSE; //<2F>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>״̬Ϊ<CCAC><CEAA>
|
||||||
|
if (m_hWorkThread)
|
||||||
WaitForSingleObject(m_hWorkThread, INFINITE); //<2F>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߳̽<DFB3><CCBD><EFBFBD>
|
WaitForSingleObject(m_hWorkThread, INFINITE); //<2F>ȴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߳̽<DFB3><CCBD><EFBFBD>
|
||||||
if (m_hWorkThread)
|
if (m_hWorkThread)
|
||||||
CloseHandle(m_hWorkThread);
|
CloseHandle(m_hWorkThread);
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#if defined (_DEBUG) || defined (WINDOWS)
|
||||||
// 智能计算当前函数的耗时,超时会打印
|
// 智能计算当前函数的耗时,超时会打印
|
||||||
#define AUTO_TICK(thresh, tag) auto_tick TICK(__FILE__, __FUNCTION__, __LINE__, thresh, tag)
|
#define AUTO_TICK(thresh, tag) auto_tick TICK(__FILE__, __FUNCTION__, __LINE__, thresh, tag)
|
||||||
#define STOP_TICK TICK.stop()
|
#define STOP_TICK TICK.stop()
|
||||||
|
|||||||
@@ -2091,10 +2091,10 @@ BOOL CALLBACK CMy2015RemoteDlg::NotifyProc(CONTEXT_OBJECT* ContextObject)
|
|||||||
int cmd = ContextObject->GetBYTE(0);
|
int cmd = ContextObject->GetBYTE(0);
|
||||||
AUTO_TICK(50, std::to_string(cmd));
|
AUTO_TICK(50, std::to_string(cmd));
|
||||||
|
|
||||||
if (ContextObject->hWnd) {
|
|
||||||
if (!IsWindow(ContextObject->hWnd))
|
|
||||||
return FALSE;
|
|
||||||
DialogBase* Dlg = (DialogBase*)ContextObject->hDlg;
|
DialogBase* Dlg = (DialogBase*)ContextObject->hDlg;
|
||||||
|
if (Dlg) {
|
||||||
|
if (!IsWindow(Dlg->GetSafeHwnd()))
|
||||||
|
return FALSE;
|
||||||
Dlg->MarkReceiving(true);
|
Dlg->MarkReceiving(true);
|
||||||
Dlg->OnReceiveComplete();
|
Dlg->OnReceiveComplete();
|
||||||
Dlg->MarkReceiving(false);
|
Dlg->MarkReceiving(false);
|
||||||
@@ -2121,24 +2121,17 @@ BOOL CALLBACK CMy2015RemoteDlg::NotifyProc(CONTEXT_OBJECT* ContextObject)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对话框指针及对话框句柄
|
|
||||||
struct dlgInfo {
|
|
||||||
HANDLE hDlg; // 对话框指针
|
|
||||||
HWND hWnd; // 窗口句柄
|
|
||||||
dlgInfo(HANDLE h, HWND type) : hDlg(h), hWnd(type) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
BOOL CALLBACK CMy2015RemoteDlg::OfflineProc(CONTEXT_OBJECT* ContextObject)
|
BOOL CALLBACK CMy2015RemoteDlg::OfflineProc(CONTEXT_OBJECT* ContextObject)
|
||||||
{
|
{
|
||||||
if (!g_2015RemoteDlg || g_2015RemoteDlg->isClosed)
|
if (!g_2015RemoteDlg || g_2015RemoteDlg->isClosed)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
dlgInfo* dlg = ContextObject->hWnd ? new dlgInfo(ContextObject->hDlg, ContextObject->hWnd) : NULL;
|
|
||||||
|
|
||||||
SOCKET nSocket = ContextObject->sClientSocket;
|
SOCKET nSocket = ContextObject->sClientSocket;
|
||||||
|
|
||||||
g_2015RemoteDlg->PostMessage(WM_USEROFFLINEMSG, (WPARAM)dlg, (LPARAM)nSocket);
|
g_2015RemoteDlg->PostMessage(WM_USEROFFLINEMSG, (WPARAM)ContextObject->hDlg, (LPARAM)nSocket);
|
||||||
|
|
||||||
ContextObject->hWnd = NULL;
|
ContextObject->hDlg = NULL;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -2534,13 +2527,9 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
|
|
||||||
dlgInfo *p = (dlgInfo *)wParam;
|
DialogBase *p = (DialogBase*)wParam;
|
||||||
if (p) {
|
if (p && ::IsWindow(p->GetSafeHwnd())) {
|
||||||
if (::IsWindow(p->hWnd)) {
|
::PostMessageA(p->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||||
::PostMessageA(p->hWnd, WM_CLOSE, 0, 0);
|
|
||||||
}
|
|
||||||
delete p;
|
|
||||||
p = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|||||||
@@ -194,7 +194,6 @@ public:
|
|||||||
m_gridDlg->ShowWindow(isGrid ? SW_SHOWMAXIMIZED : SW_HIDE);
|
m_gridDlg->ShowWindow(isGrid ? SW_SHOWMAXIMIZED : SW_HIDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ContextObject->hWnd = Dlg->GetSafeHwnd();
|
|
||||||
ContextObject->hDlg = Dlg;
|
ContextObject->hDlg = Dlg;
|
||||||
if(id == IDD_DIALOG_SCREEN_SPY)
|
if(id == IDD_DIALOG_SCREEN_SPY)
|
||||||
m_RemoteWnds[Dlg->GetSafeHwnd()]=(CDialogBase*)Dlg;
|
m_RemoteWnds[Dlg->GetSafeHwnd()]=(CDialogBase*)Dlg;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
<LocalDebuggerCommand>$(SolutionDir)Bin\$(TargetName)_x64d$(TargetExt)</LocalDebuggerCommand>
|
<LocalDebuggerCommand>$(SolutionDir)Bin\$(TargetName)_x64d$(TargetExt)</LocalDebuggerCommand>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
<LocalDebuggerCommandArguments>-agent</LocalDebuggerCommandArguments>
|
<LocalDebuggerCommandArguments>-agent</LocalDebuggerCommandArguments>
|
||||||
|
<LocalDebuggerCommandArgumentsHistory>-agent|</LocalDebuggerCommandArgumentsHistory>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<RESOURCE_FILE>2015Remote.rc</RESOURCE_FILE>
|
<RESOURCE_FILE>2015Remote.rc</RESOURCE_FILE>
|
||||||
|
|||||||
@@ -277,8 +277,6 @@ BOOL IOCPServer::InitializeIOCP(VOID)
|
|||||||
|
|
||||||
DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
|
DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
|
||||||
{
|
{
|
||||||
Mprintf("======> IOCPServer WorkThreadProc begin \n");
|
|
||||||
|
|
||||||
ZSTD_DCtx* m_Dctx = ZSTD_createDCtx(); // 解压上下文
|
ZSTD_DCtx* m_Dctx = ZSTD_createDCtx(); // 解压上下文
|
||||||
|
|
||||||
IOCPServer* This = (IOCPServer*)(lParam);
|
IOCPServer* This = (IOCPServer*)(lParam);
|
||||||
@@ -371,8 +369,6 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
|
|||||||
|
|
||||||
ZSTD_freeDCtx(m_Dctx);
|
ZSTD_freeDCtx(m_Dctx);
|
||||||
|
|
||||||
Mprintf("======> IOCPServer WorkThreadProc end \n");
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -367,8 +367,7 @@ public:
|
|||||||
CBuffer InCompressedBuffer; // 接收到的压缩的数据
|
CBuffer InCompressedBuffer; // 接收到的压缩的数据
|
||||||
CBuffer InDeCompressedBuffer; // 解压后的数据
|
CBuffer InDeCompressedBuffer; // 解压后的数据
|
||||||
CBuffer OutCompressedBuffer;
|
CBuffer OutCompressedBuffer;
|
||||||
HWND hWnd;
|
HANDLE hDlg; // 对话框指针
|
||||||
HANDLE hDlg;
|
|
||||||
OVERLAPPEDPLUS* olps; // OVERLAPPEDPLUS
|
OVERLAPPEDPLUS* olps; // OVERLAPPEDPLUS
|
||||||
int CompressMethod; // 压缩算法
|
int CompressMethod; // 压缩算法
|
||||||
HeaderParser Parser; // 解析数据协议
|
HeaderParser Parser; // 解析数据协议
|
||||||
@@ -464,7 +463,6 @@ public:
|
|||||||
VOID InitMember(SOCKET s, Server *svr)
|
VOID InitMember(SOCKET s, Server *svr)
|
||||||
{
|
{
|
||||||
memset(szBuffer, 0, sizeof(char) * PACKET_LENGTH);
|
memset(szBuffer, 0, sizeof(char) * PACKET_LENGTH);
|
||||||
hWnd = NULL;
|
|
||||||
hDlg = NULL;
|
hDlg = NULL;
|
||||||
sClientSocket = s;
|
sClientSocket = s;
|
||||||
PeerName = ::GetPeerName(sClientSocket);
|
PeerName = ::GetPeerName(sClientSocket);
|
||||||
|
|||||||
Reference in New Issue
Block a user