mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-21 23:13:08 +08:00
style: Change files encoding format to UTF8-BOM
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// ShellDlg.cpp : ʵ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
// ShellDlg.cpp : 实现文件
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
@@ -14,15 +14,15 @@ END_MESSAGE_MAP()
|
||||
|
||||
void CAutoEndEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>ĩβ
|
||||
// 将光标移动到文本末尾
|
||||
int nLength = GetWindowTextLength();
|
||||
SetSel(nLength, nLength);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD>ദ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
||||
// 调用父类处理输入字符
|
||||
CEdit::OnChar(nChar, nRepCnt, nFlags);
|
||||
}
|
||||
|
||||
// CShellDlg <EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD>
|
||||
// CShellDlg 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(CShellDlg, CDialog)
|
||||
|
||||
@@ -49,7 +49,7 @@ BEGIN_MESSAGE_MAP(CShellDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CShellDlg <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// CShellDlg 消息处理程序
|
||||
|
||||
|
||||
BOOL CShellDlg::OnInitDialog()
|
||||
@@ -61,7 +61,7 @@ BOOL CShellDlg::OnInitDialog()
|
||||
SetIcon(m_hIcon,FALSE);
|
||||
|
||||
CString str;
|
||||
str.Format("%s - Զ<EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>", m_IPAddress);
|
||||
str.Format("%s - 远程终端", m_IPAddress);
|
||||
SetWindowText(str);
|
||||
|
||||
BYTE bToken = COMMAND_NEXT;
|
||||
@@ -75,7 +75,7 @@ BOOL CShellDlg::OnInitDialog()
|
||||
m_Edit.SetLimitText(EDIT_MAXLENGTH);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// <EFBFBD>쳣: OCX <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳӦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> FALSE
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
|
||||
|
||||
@@ -99,51 +99,51 @@ std::string removeAnsiCodes(const std::string& input)
|
||||
|
||||
VOID CShellDlg::AddKeyBoardData(void)
|
||||
{
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||
// 最后填上0
|
||||
|
||||
//Shit\0
|
||||
m_ContextObject->InDeCompressedBuffer.WriteBuffer((LPBYTE)"", 1); //<EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>\0
|
||||
m_ContextObject->InDeCompressedBuffer.WriteBuffer((LPBYTE)"", 1); //从被控制端来的数据我们要加上一个\0
|
||||
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(0);
|
||||
bool firstRecv = tmp.c_str() == std::string(">");
|
||||
CString strResult = firstRecv ? "" : CString("\r\n") + removeAnsiCodes(tmp.c_str()).c_str(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \0
|
||||
CString strResult = firstRecv ? "" : CString("\r\n") + removeAnsiCodes(tmp.c_str()).c_str(); //获得所有的数据 包括 \0
|
||||
|
||||
//<EFBFBD>滻<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>з<EFBFBD> <20><><EFBFBD><EFBFBD>cmd <20>Ļ<EFBFBD><C4BB><EFBFBD>ͬw32<33>µı༭<C4B1>ؼ<EFBFBD><D8BC>Ļ<EFBFBD><C4BB>з<EFBFBD><D0B7><EFBFBD>һ<EFBFBD><D2BB> <20><><EFBFBD>еĻس<C4BB><D8B3><EFBFBD><EFBFBD><EFBFBD>
|
||||
//替换掉原来的换行符 可能cmd 的换行同w32下的编辑控件的换行符不一致 所有的回车换行
|
||||
strResult.Replace("\n", "\r\n");
|
||||
|
||||
if (strResult.GetLength() + m_Edit.GetWindowTextLength() >= EDIT_MAXLENGTH) {
|
||||
CString text;
|
||||
m_Edit.GetWindowTextA(text);
|
||||
auto n = EDIT_MAXLENGTH - strResult.GetLength() - 5; // <EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>clear<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
auto n = EDIT_MAXLENGTH - strResult.GetLength() - 5; // 留5个字符输入clear清屏
|
||||
if (n < 0) {
|
||||
strResult = strResult.Right(strResult.GetLength() + n);
|
||||
}
|
||||
m_Edit.SetWindowTextA(text.Right(max(n, 0)));
|
||||
}
|
||||
|
||||
//<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//得到当前窗口的字符个数
|
||||
int iLength = m_Edit.GetWindowTextLength(); //kdfjdjfdir
|
||||
//1.txt
|
||||
//2.txt
|
||||
//dir\r\n
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>궨λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ò<EFBFBD>ѡ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD> Ҳ<><D2B2><EFBFBD><EFBFBD>ĩβ <20><>Ϊ<EFBFBD>ӱ<EFBFBD><D3B1>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ҫ<><D2AA>ʾ<EFBFBD><CABE> <20><><EFBFBD>ǵ<EFBFBD> <20><>ǰ<EFBFBD><C7B0><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD>
|
||||
//将光标定位到该位置并选中指定个数的字符 也就是末尾 因为从被控端来的数据 要显示在 我们的 先前内容的后面
|
||||
m_Edit.SetSel(iLength, iLength);
|
||||
|
||||
//<EFBFBD>ô<EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD><EFBFBD>ַ<EFBFBD> //<EFBFBD><EFBFBD>ʾ
|
||||
//用传递过来的数据替换掉该位置的字符 //显示
|
||||
m_Edit.ReplaceSel(strResult);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>µõ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ĵ<EFBFBD>С
|
||||
//重新得到字符的大小
|
||||
|
||||
m_nCurSel = m_Edit.GetWindowTextLength();
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>ʱ <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>س<EFBFBD>
|
||||
//Ҫ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD>Ҫ<EFBFBD><EFBFBD>PreTranslateMessage<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//我们注意到,我们在使用远程终端时 ,发送的每一个命令行 都有一个换行符 就是一个回车
|
||||
//要找到这个回车的处理我们就要到PreTranslateMessage函数的定义
|
||||
}
|
||||
|
||||
void CShellDlg::OnClose()
|
||||
{
|
||||
CancelIO();
|
||||
// <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 等待数据处理完毕
|
||||
if (IsProcessing()) {
|
||||
ShowWindow(SW_HIDE);
|
||||
return;
|
||||
@@ -172,27 +172,27 @@ CString ExtractAfterLastNewline(const CString& str)
|
||||
BOOL CShellDlg::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if (pMsg->message == WM_KEYDOWN) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>VK_ESCAPE<EFBFBD><EFBFBD>VK_DELETE
|
||||
// 屏蔽VK_ESCAPE、VK_DELETE
|
||||
if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_DELETE)
|
||||
return true;
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿɱ༭<EFBFBD><EFBFBD><EFBFBD>Ļس<EFBFBD><EFBFBD><EFBFBD>
|
||||
//如果是可编辑框的回车键
|
||||
if (pMsg->wParam == VK_RETURN && pMsg->hwnd == m_Edit.m_hWnd) {
|
||||
//<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
//得到窗口的数据大小
|
||||
int iLength = m_Edit.GetWindowTextLength();
|
||||
CString str;
|
||||
//<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//得到窗口的字符数据
|
||||
m_Edit.GetWindowText(str);
|
||||
//<EFBFBD><EFBFBD><EFBFBD>뻻<EFBFBD>з<EFBFBD>
|
||||
//加入换行符
|
||||
str += "\r\n";
|
||||
//<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ͳ<EFBFBD>ȥ
|
||||
//得到整个的缓冲区的首地址再加上原有的字符的位置,其实就是用户当前输入的数据了
|
||||
//然后将数据发送出去
|
||||
LPBYTE pSrc = (LPBYTE)str.GetBuffer(0) + m_nCurSel;
|
||||
#ifdef _DEBUG
|
||||
TRACE("[Shell]=> %s", (char*)pSrc);
|
||||
#endif
|
||||
if (0 == strcmp((char*)pSrc, "exit\r\n")) { // <EFBFBD>˳<EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
if (0 == strcmp((char*)pSrc, "exit\r\n")) { // 退出终端
|
||||
return PostMessage(WM_CLOSE);
|
||||
} else if (0 == strcmp((char*)pSrc, "clear\r\n")) { // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
} else if (0 == strcmp((char*)pSrc, "clear\r\n")) { // 清理终端
|
||||
str = ExtractAfterLastNewline(str.Left(str.GetLength() - 7));
|
||||
m_Edit.SetWindowTextA(str);
|
||||
m_nCurSel = m_Edit.GetWindowTextLength();
|
||||
@@ -204,12 +204,12 @@ BOOL CShellDlg::PreTranslateMessage(MSG* pMsg)
|
||||
m_ContextObject->Send2Client(pSrc, length);
|
||||
m_nCurSel = m_Edit.GetWindowTextLength();
|
||||
}
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>VK_BACK
|
||||
// 限制VK_BACK
|
||||
if (pMsg->wParam == VK_BACK && pMsg->hwnd == m_Edit.m_hWnd) {
|
||||
if (m_Edit.GetWindowTextLength() <= m_nReceiveLength)
|
||||
return true;
|
||||
}
|
||||
// ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 示例:
|
||||
//dir\r\n 5
|
||||
}
|
||||
|
||||
@@ -223,10 +223,10 @@ HBRUSH CShellDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||
|
||||
if ((pWnd->GetDlgCtrlID() == IDC_EDIT) && (nCtlColor == CTLCOLOR_EDIT)) {
|
||||
COLORREF clr = RGB(255, 255, 255);
|
||||
pDC->SetTextColor(clr); //<EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
pDC->SetTextColor(clr); //设置白色的文本
|
||||
clr = RGB(0,0,0);
|
||||
pDC->SetBkColor(clr); //<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ɫ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
||||
return CreateSolidBrush(clr); //<EFBFBD><EFBFBD>ΪԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ˢ<EFBFBD>Ӿ<EFBFBD><EFBFBD><EFBFBD>
|
||||
pDC->SetBkColor(clr); //设置黑色的背景
|
||||
return CreateSolidBrush(clr); //作为约定,返回背景色对应的刷子句柄
|
||||
} else {
|
||||
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
||||
}
|
||||
@@ -238,13 +238,13 @@ void CShellDlg::OnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
|
||||
if (!m_Edit.GetSafeHwnd()) return; // ȷ<EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!m_Edit.GetSafeHwnd()) return; // 确保控件已创建
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>úʹ<EFBFBD>С
|
||||
// 计算新位置和大小
|
||||
CRect rc;
|
||||
m_Edit.GetWindowRect(&rc);
|
||||
ScreenToClient(&rc);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿؼ<EFBFBD><EFBFBD><EFBFBD>С
|
||||
// 重新设置控件大小
|
||||
m_Edit.MoveWindow(0, 0, cx, cy, TRUE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user