📄 sendmsg_bak.txt
字号:
BOOL CCtrl_Clnt9Doc::SendMsg(WORD wCmd)
{
/*CMD_KEY_HOOK 和CMD_KEY_MOUSE已经被取消
在m_bBusy=TRUE状态下,所有KEY&MOUSE将被保存
直到m_bBusy=FALSE时再发送
*/
// HGLOBAL hFileData;
LPVOID lpFileData;
DWORD dwFileSize;
CFile fp;
int nRet;
CString strtmp;
SENDMSG SendMsg;
LPCTSTR lpParam;
LPSTR lpText;
int nSize;
if (!m_bConnecting) return false;
if (!m_bUsing) return true;
m_bUsing = true;
memset(&SendMsg, 0, sizeof(SENDMSG));
memcpy(SendMsg.szPassword, m_strPassword, m_strPassword.GetLength());
/* if (m_strParam.GetLength() > 50)
{
SendMsg.wCmd = CMD_STATE_INFO;
SendMsg.dwFileSize = m_strParam.GetLength();
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto ErrorSend001;
if (ReadSafe(&m_wskClient, (char *)&SendMsg, sizeof(SENDMSG)) < 0)
goto ErrorSend001;
if (SendMsg.iErrorCode < 0)
return ;
lpParam = m_strParam;
if (m_wskClient.SendData((char *)lpParam,m_strParam.GetLength() , 60) < 0 )
goto ErrorSend001;
SendMsg.dwFileSize = 0;
if (ReadSafe(&m_wskClient, (char *)&SendMsg, sizeof(SENDMSG)) < 0)
goto ErrorSend001;
if (SendMsg.iErrorCode < 0)
return ;
}
else
{
memcpy(SendMsg.szText, m_strParam, m_strParam.GetLength());
SendMsg.dwFileSize = m_strParam.GetLength();
}
*/
SendMsg.wCmd = wCmd;
switch (wCmd)
{
/* case CMD_FILE_SEND:
//Step 1: Get File
nRet = fp.Open (m_strSaveFile,CFile::modeRead);
if (nRet == 0) return;
dwFileSize = fp.GetLength();
lpFileData = GlobalAlloc (GMEM_FIXED,dwFileSize);
if (lpFileData == NULL)
{GlobalFree(lpFileData);fp.Close(); return;}
fp.ReadHuge (lpFileData,dwFileSize);
fp.Close ();
//Step 2: Send struct
SendMsg.dwBmpSize = m_strParam.GetLength();
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto ErrorSend001;
//Step 3: Confirm
if (ReadSafe(&m_wskClient, (char *)&SendMsg, sizeof(SENDMSG)) < 0)
{GlobalFree(lpFileData);goto ErrorSend001;}
if (SendMsg.iErrorCode < 0)
{GlobalFree(lpFileData);return ;}
//Step 4: Send file
if (m_wskClient.SendData((char *)lpFileData,dwFileSize, 60) < 0 )
{GlobalFree(lpFileData);goto ErrorSend001;}
GlobalFree(lpFileData);
goto SendWait001;
//DEL case CMD_KEY_HOOK:
*/
case CMD_KEY_HOOK:
SendMsg.dwHookFlags = m_dwHookFlags;
SendMsg.dwHookParam1 = m_dwHookParam1;
SendMsg.dwHookParam2 = m_dwHookParam2;
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto Err01;
return true;
/* case CMD_MOUSE_HOOK:
SendMsg.dwHookFlags = m_dwHookFlags;
SendMsg.dwHookParam1 = m_dwHookParam1 * 65535 / m_nRmtWidth;
SendMsg.dwHookParam2 = m_dwHookParam2 * 65535 / m_nRmtHeight;
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto Err01;
return;
*/
case CMD_MOUSE_RDBCLICK:
case CMD_MOUSE_LDBCLICK:
case CMD_MOUSE_RCLICK:
case CMD_MOUSE_LCLICK:
SendMsg.dwHookFlags = m_dwHookFlags;
SendMsg.dwHookParam1 = m_dwHookParam1 * 65535 / m_nRmtWidth;
SendMsg.dwHookParam2 = m_dwHookParam2 * 65535 / m_nRmtHeight;
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto Err01;
return true;
}//end switch
//发送命令
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto Err01;
Wait01:
//等待返回
memset(&SendMsg, 0, sizeof(SENDMSG));
if (ReadSafe(&m_wskClient, (char *)&SendMsg, sizeof(SENDMSG)) < 0)
goto Err01;
switch(SendMsg.wCmd)
{
case CMD_FILE_RECEIVE:
dwFileSize = SendMsg.dwBmpSize;
lpFileData = GlobalAlloc (GMEM_FIXED,dwFileSize);
if (lpFileData == NULL)
{SendMsg.iErrorCode = -12;
strcpy(SendMsg.szText,"MSG: File Send Failed");
break;
}
else
SendMsg.iErrorCode = 0;
nRet = m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60);
if (nRet <= 0 ){ GlobalFree(lpFileData); goto ErrorSend001;}
if (ReadSafe(&m_wskClient, (char *)lpFileData, dwFileSize) < 0)
{GlobalFree(lpFileData); goto ErrorSend001; }
lpParam = m_strSaveFile;
CmdProc_RecFile((char *)lpParam, lpFileData);
DisplayMsg (SendMsg.szText);
break;
case CMD_GET_SCREEN_INFO:
m_nRmtBits = SendMsg.nBits;
m_nRmtWidth = SendMsg.rcArea.right;
m_nRmtHeight = SendMsg.rcArea.bottom;
m_nBits = SendMsg.nBits;
m_strVersion = SendMsg.szText;
m_rcArea = CRect (0, 0, SendMsg.rcArea.right, SendMsg.rcArea.bottom);
break;
case CMD_STATE_INFO:
while(SendMsg.wCmd==CMD_STATE_INFO)
{
//Step 1: get struct
nSize = (int)SendMsg.dwFileSize;
lpText = (char *)calloc(nSize+1, sizeof(char));
if (lpText == NULL)
{
SendMsg.iErrorCode = -1;
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto ErrorSend001;
}
//Step 2: confirm
SendMsg.iErrorCode = 0;
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto ErrorSend001;
//Step 3: Get Msg
if (ReadSafe(&m_wskClient, (char *)lpText, nSize) < 0)
goto ErrorSend001;
DisplayMsg (lpText);
free(lpText);
lpText = NULL;
//Step 4: confirm
if (m_wskClient.SendData((char *)&SendMsg, sizeof(SENDMSG), 60) < 0 )
goto ErrorSend001;
//Step 5: wait next
if (ReadSafe(&m_wskClient, (char *)&SendMsg,sizeof(SENDMSG)) < 0)
goto ErrorSend001;
}//end while
DisplayMsg (SendMsg.szText);
break;
case CMD_SOCKET_CLOSE:
DisplayMsg (SendMsg.szText);
break;
}//end switch
m_bUsing = false;
return true;
Err01:
DisconnectSocket();
strtmp.Format("MSG: s%X error for socket %d", m_wskClient, m_wskClient.GetError());
DisplayMsg(strtmp);
if (!m_bConnectAuto)
{ m_bUsing = false;
return false;
}
while(AfxMessageBox("注意: 你确定要重新连接吗?", MB_YESNO) == IDYES)
{
if (ConnectSocket())
{
m_bUsing = false;
return false;
}
}
m_bUsing = false;
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -