4 Commits
Author SHA1 Message Date
yuanyuanxianganddeepseek-v4-pro 0416dadbba Feature: Add language-switch toolbar button and bilingual dialog
Add a 15th toolbar button "Lang/语言" after the Help button so Chinese
readers can switch language without knowing English; it opens the existing
language-select dialog. The dialog title is now bilingual ("切换语言 /
Switch Language") and its label/buttons use Chinese source strings
("语言:", "确定", "取消"), which still localize to en/de via
TranslateDialog. The toolbar bitmap is extended with a globe icon.

Co-Authored-By: deepseek-v4-pro
2026-09-08 16:34:45 +02:00
yuanyuanxianganddeepseek-v4-pro 91238da50d Feature: Add German (de_DE) language support
Add German as the fourth selectable UI language. The new de_DE.ini mirrors
en_US.ini with byte-identical Chinese keys (2028 lines, zero missing
translations, zero key mismatches), so it passes CheckEncoding and appears in
the language list automatically. German values are pure-ASCII transliterations
(ae/oe/ue/ss) because the GBK/CP936 architecture cannot encode umlauts.
LangManager.h now maps de_DE to the display name "Deutsch". Also translated the
seven Chinese value==key gaps that en_US itself left untranslated.

Co-Authored-By: deepseek-v4-pro
2026-09-06 10:33:49 +02:00
yuanyuanxianganddeepseek-v4-pro 221617fe02 Fix: Translate remaining server UI strings missing _TR/_L
Wrap the last untranslated Chinese UI strings so English mode stops showing
raw Chinese. Format strings passed to sprintf/wsprintf and the status-bar
SendMessageTimeout calls now go through _TRF, and the CString/PostMessage
literals plus a few member-initializer and Compare values go through
_TR/_L. Covers the wallet validation message, the SOCKS proxy connection
log lines, the file-manager status bar, and the machine-info progress
messages.

Add the 24 corresponding entries to lang/en_US.ini and lang/zh_TW.ini
(GBK), keeping the escaped-format-string key style. The Yes/No/Desktop/
Recent keys already existed, so the BuildDlg and CFileManagerDlg compare
fixes reuse them.

Co-Authored-By: deepseek-v4-pro
2026-09-06 09:39:59 +02:00
yuanyuanxianganddeepseek-v4-pro dd845823b6 Feature: Add get/set clipboard buttons to remote desktop toolbar
Add two toolbar buttons — get clipboard (letter C) and set clipboard (letter P) —
after the screenshot button and before the minimize button, so clipboard sync stays
reachable in fullscreen mode where the system menu cannot be opened.

The buttons reuse the existing IDM_GET_CLIPBOARD / IDM_SET_CLIPBOARD system-menu
handlers by posting WM_SYSCOMMAND to the parent. The toolbar button count grows
from 16 to 18, and the slide/animation dimensions are widened from 640 to 720.
Letter C/P icons and Simplified-Chinese source strings ("获取剪贴板", "设置剪贴板")
are added, along with English and Traditional-Chinese translations.

Co-Authored-By: deepseek-v4-pro
2026-09-03 13:29:39 +02:00
20 changed files with 2180 additions and 56 deletions

No files matched your search

Binary file not shown.
+2 -1
View File
@@ -1409,6 +1409,7 @@ VOID CMy2015RemoteDlg::CreateToolBar()
m_ToolBar.SetButtonText(11, _TR("生成服务端"));
m_ToolBar.SetButtonText(12, _TR("搜索"));
m_ToolBar.SetButtonText(13, _TR("帮助"));
m_ToolBar.SetButtonText(14, _T("Lang/语言"));
// ============================================================
// UIBranding: 根据编译时配置或运行时标志隐藏工具栏按钮
@@ -1459,7 +1460,7 @@ VOID CMy2015RemoteDlg::CreateToolBar()
}
// 如果所有按钮都被隐藏,则隐藏整个工具栏
if (hiddenCount >= 14) {
if (hiddenCount >= 15) {
m_ToolBar.ShowWindow(SW_HIDE);
}
+1 -1
View File
@@ -217,7 +217,7 @@ CBuildDlg::CBuildDlg(CWnd* pParent)
, m_strPort(_T(""))
, m_strFindden(FLAG_FINDEN)
, m_sGroupName(_T("default"))
, m_strEncryptIP(_T("是"))
, m_strEncryptIP(_L(_T("是")))
, m_sInstallDir(_T(""))
, m_sInstallName(_T(""))
, m_sDownloadUrl(_T(""))
+12
View File
@@ -551,6 +551,18 @@ void CIconButton::DrawIconLetterZ(CDC* pDC, const CRect& rc)
DrawLetterIcon(pDC, rc, _T("Z"));
}
// Letter C icon (获取剪贴板)
void CIconButton::DrawIconLetterC(CDC* pDC, const CRect& rc)
{
DrawLetterIcon(pDC, rc, _T("C"));
}
// Letter P icon (设置剪贴板)
void CIconButton::DrawIconLetterP(CDC* pDC, const CRect& rc)
{
DrawLetterIcon(pDC, rc, _T("P"));
}
// Audio On: speaker with sound waves
void CIconButton::DrawIconAudioOn(CDC* pDC, const CRect& rc)
{
+2
View File
@@ -46,6 +46,8 @@ public:
static void DrawIconLetterX(CDC* pDC, const CRect& rc); // 字母 X 图标
static void DrawIconLetterY(CDC* pDC, const CRect& rc); // 字母 Y 图标
static void DrawIconLetterZ(CDC* pDC, const CRect& rc); // 字母 Z 图标
static void DrawIconLetterC(CDC* pDC, const CRect& rc); // 字母 C 图标 (获取剪贴板)
static void DrawIconLetterP(CDC* pDC, const CRect& rc); // 字母 P 图标 (设置剪贴板)
static void DrawIconAudioOn(CDC* pDC, const CRect& rc); // 音频开启图标 (喇叭+声波)
static void DrawIconAudioOff(CDC* pDC, const CRect& rc); // 音频关闭图标 (喇叭+斜线)
+1 -1
View File
@@ -107,7 +107,7 @@ void CWalletDlg::OnOK()
if (a[i].IsEmpty()) continue;
if (WALLET_UNKNOWN == detectWalletType(a[i].GetString())) {
char tip[100];
sprintf(tip, "第 %d 个钱包地址不合法!", i + 1);
sprintf(tip, _TRF("第 %d 个钱包地址不合法!"), i + 1);
MessageBoxL(CString(tip), "提示", MB_ICONINFORMATION);
return;
}
+1 -1
View File
@@ -268,7 +268,7 @@ BOOL CHideScreenSpyDlg::OnInitDialog()
#ifdef _DEBUG
// ShowWindow(SW_MINIMIZE);
#endif
m_strTip = CString("请等待......");
m_strTip = _TR("请等待......");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
+9 -8
View File
@@ -703,12 +703,13 @@ protected:
if (langCode == _T("zh_CN")) return _T("Simplified Chinese");
if (langCode == _T("zh_TW")) return _T("Traditional Chinese");
if (langCode == _T("en_US")) return _T("English");
if (langCode == _T("de_DE")) return _T("Deutsch");
return langCode;
}
LPCDLGTEMPLATE CreateDialogTemplate()
{
const WORD DLG_WIDTH = 200;
const WORD DLG_WIDTH = 260;
const WORD DLG_HEIGHT = 75;
m_templateBuffer.clear();
@@ -722,24 +723,24 @@ protected:
AppendData(&dlgTemplate, sizeof(DLGTEMPLATE));
AppendWord(0); // 菜单
AppendWord(0); // 窗口类
AppendString(_T("Select Language"));
AppendString(_T("切换语言 / Switch Language"));
AlignToDword();
// 静态文本
AddControl(0x0082, 15, 15, 50, 12, (WORD)-1,
SS_LEFT | WS_CHILD | WS_VISIBLE, _T("Language:"));
SS_LEFT | WS_CHILD | WS_VISIBLE, _T("语言:"));
// ComboBox
AddControl(0x0085, 65, 13, 120, 150, 1001,
AddControl(0x0085, 65, 13, 180, 150, 1001,
CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL, _T(""));
// OK 按钮
AddControl(0x0080, 45, 50, 50, 14, IDOK,
BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, _T("OK"));
AddControl(0x0080, 75, 50, 50, 14, IDOK,
BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, _T("确定"));
// Cancel 按钮
AddControl(0x0080, 105, 50, 50, 14, IDCANCEL,
BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, _T("Cancel"));
AddControl(0x0080, 135, 50, 50, 14, IDCANCEL,
BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, _T("取消"));
return (LPCDLGTEMPLATE)m_templateBuffer.data();
}
+34 -11
View File
@@ -39,6 +39,8 @@ BEGIN_MESSAGE_MAP(CToolbarDlg, CDialogEx)
ON_BN_CLICKED(IDC_BTN_Y, &CToolbarDlg::OnBnClickedY)
ON_BN_CLICKED(IDC_BTN_Z, &CToolbarDlg::OnBnClickedZ)
ON_BN_CLICKED(IDC_BTN_SCREENSHOT, &CToolbarDlg::OnBnClickedScreenshot)
ON_BN_CLICKED(IDC_BTN_GET_CLIPBOARD, &CToolbarDlg::OnBnClickedGetClipboard)
ON_BN_CLICKED(IDC_BTN_SET_CLIPBOARD, &CToolbarDlg::OnBnClickedSetClipboard)
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
@@ -88,7 +90,7 @@ void CToolbarDlg::CheckMousePosition()
int monWidth = monRight - monLeft;
int monHeight = monBottom - monTop;
int btnSize = 32, btnSpacing = 8, btnCount = 16;
int btnSize = 32, btnSpacing = 8, btnCount = 18;
if (m_nPosition <= 1) {
// 水平模式 (上/下)
@@ -153,9 +155,9 @@ void CToolbarDlg::SlideIn()
int monWidth = monRight - monLeft;
int monHeight = monBottom - monTop;
int hw = 640; // 水平工具栏宽度 (与垂直高度一致)
int hw = 720; // 水平工具栏宽度 (与垂直高度一致)
int vw = 40;
int vh = 640;
int vh = 720;
// 从边缘展开(改变窗口大小),避免多显示器时跑到相邻屏幕
switch (m_nPosition) {
@@ -212,9 +214,9 @@ void CToolbarDlg::SlideOut()
int monWidth = monRight - monLeft;
int monHeight = monBottom - monTop;
int hw = 640;
int hw = 720;
int vw = 40;
int vh = 640;
int vh = 720;
CWnd* btns[] = {
&m_btnExit, &m_btnControl,
@@ -224,9 +226,10 @@ void CToolbarDlg::SlideOut()
&m_btnQuality, &m_btnRestoreConsole,
&m_btnX, &m_btnY, &m_btnZ,
&m_btnScreenshot,
&m_btnGetClipboard, &m_btnSetClipboard,
&m_btnMinimize, &m_btnClose,
};
const int N = 16;
const int N = 18;
CRect btnRects[N];
for (int i = 0; i < N; i++) {
btns[i]->GetWindowRect(&btnRects[i]);
@@ -331,6 +334,8 @@ BOOL CToolbarDlg::OnInitDialog()
m_btnY.SubclassDlgItem(IDC_BTN_Y, this);
m_btnZ.SubclassDlgItem(IDC_BTN_Z, this);
m_btnScreenshot.SubclassDlgItem(IDC_BTN_SCREENSHOT, this);
m_btnGetClipboard.SubclassDlgItem(IDC_BTN_GET_CLIPBOARD, this);
m_btnSetClipboard.SubclassDlgItem(IDC_BTN_SET_CLIPBOARD, this);
m_btnMinimize.SubclassDlgItem(IDC_BTN_MINIMIZE, this);
m_btnClose.SubclassDlgItem(IDC_BTN_CLOSE, this);
@@ -343,6 +348,8 @@ BOOL CToolbarDlg::OnInitDialog()
// Y按钮图标在 UpdateButtonIcons 中根据音频状态动态设置
m_btnZ.SetIconDrawFunc(CIconButton::DrawIconLetterZ); // 预留按钮 Z
m_btnScreenshot.SetIconDrawFunc(CIconButton::DrawIconScreenshot);
m_btnGetClipboard.SetIconDrawFunc(CIconButton::DrawIconLetterC);
m_btnSetClipboard.SetIconDrawFunc(CIconButton::DrawIconLetterP);
m_btnMinimize.SetIconDrawFunc(CIconButton::DrawIconMinimize);
m_btnClose.SetIconDrawFunc(CIconButton::DrawIconClose);
m_btnClose.SetIsCloseButton(true);
@@ -367,6 +374,8 @@ BOOL CToolbarDlg::OnInitDialog()
m_tooltip.AddTool(&m_btnY, pParent->m_Settings.AudioEnabled ? _TR("关闭系统音频") : _TR("打开系统音频"));
m_tooltip.AddTool(&m_btnZ, _TR("选择ROI"));
m_tooltip.AddTool(&m_btnScreenshot, _TR("截图"));
m_tooltip.AddTool(&m_btnGetClipboard, _TR("获取剪贴板"));
m_tooltip.AddTool(&m_btnSetClipboard, _TR("设置剪贴板"));
m_tooltip.AddTool(&m_btnMinimize, _TR("最小化"));
m_tooltip.AddTool(&m_btnClose, _TR("关闭"));
@@ -383,9 +392,9 @@ BOOL CToolbarDlg::OnInitDialog()
int monWidth = rcMonitor.right - rcMonitor.left;
int monHeight = rcMonitor.bottom - rcMonitor.top;
int hw = 640;
int hw = 720;
int vw = 40;
int vh = 640;
int vh = 720;
int hx = rcMonitor.left + (monWidth - hw) / 2;
switch (m_nPosition) {
@@ -514,7 +523,7 @@ void CToolbarDlg::LayoutButtons()
{
int btnSize = 32;
int btnSpacing = 8;
int btnCount = 16;
int btnCount = 18;
CWnd* btns[] = {
&m_btnExit,
@@ -531,6 +540,8 @@ void CToolbarDlg::LayoutButtons()
&m_btnY, // 预留按钮 Y
&m_btnZ, // 预留按钮 Z
&m_btnScreenshot,
&m_btnGetClipboard,
&m_btnSetClipboard,
&m_btnMinimize,
&m_btnClose,
};
@@ -588,9 +599,9 @@ void CToolbarDlg::UpdatePosition()
int monWidth = rcMonitor.right - rcMonitor.left;
int monHeight = rcMonitor.bottom - rcMonitor.top;
int hw = 640;
int hw = 720;
int vw = 40;
int vh = 640;
int vh = 720;
int hx = rcMonitor.left + (monWidth - hw) / 2;
switch (m_nPosition) {
@@ -785,6 +796,18 @@ void CToolbarDlg::OnBnClickedScreenshot()
}
}
void CToolbarDlg::OnBnClickedGetClipboard()
{
// 与系统菜单 IDM_GET_CLIPBOARD 相同的处理逻辑
GetParent()->PostMessage(WM_SYSCOMMAND, IDM_GET_CLIPBOARD, 0);
}
void CToolbarDlg::OnBnClickedSetClipboard()
{
// 与系统菜单 IDM_SET_CLIPBOARD 相同的处理逻辑
GetParent()->PostMessage(WM_SYSCOMMAND, IDM_SET_CLIPBOARD, 0);
}
BOOL CToolbarDlg::PreTranslateMessage(MSG* pMsg)
{
if (m_tooltip.GetSafeHwnd()) {
+4
View File
@@ -39,6 +39,8 @@ public:
CIconButton m_btnY; // 预留按钮 Y
CIconButton m_btnZ; // 预留按钮 Z
CIconButton m_btnScreenshot;
CIconButton m_btnGetClipboard; // 获取剪贴板
CIconButton m_btnSetClipboard; // 设置剪贴板
CIconButton m_btnMinimize;
CIconButton m_btnClose;
@@ -80,6 +82,8 @@ public:
afx_msg void OnBnClickedY(); // 预留按钮 Y 响应函数
afx_msg void OnBnClickedZ(); // 预留按钮 Z 响应函数
afx_msg void OnBnClickedScreenshot();
afx_msg void OnBnClickedGetClipboard();
afx_msg void OnBnClickedSetClipboard();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
virtual BOOL OnInitDialog();
};
+10 -10
View File
@@ -644,22 +644,22 @@ void CFileManagerDlg::OnReceiveComplete()
break;
case TOKEN_FILE_SEARCHPLUS_NONTFS: {
DWORD_PTR dwResult;
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,(LPARAM)_T(" 驱动盘非NTFS格式"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,(LPARAM)_TRF(" 驱动盘非NTFS格式"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
break;
case TOKEN_FILE_SEARCHPLUS_HANDLE: {
DWORD_PTR dwResult;
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_T("需要管理员权限运行"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_TRF("需要管理员权限运行"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
break;
case TOKEN_FILE_SEARCHPLUS_INITUSN: {
DWORD_PTR dwResult;
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_T("初始化日志文件失败"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_TRF("初始化日志文件失败"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
break;
case TOKEN_FILE_SEARCHPLUS_GETUSN: {
DWORD_PTR dwResult;
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_T("获取日志文件失败"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, (LPARAM)_TRF("获取日志文件失败"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
break;
case TOKEN_FILE_SEARCHPLUS_NUMBER: {
@@ -764,13 +764,13 @@ void CFileManagerDlg::OnDblclkListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult)
int nItem = m_list_remote_driver.GetSelectionMark();
CString directory = m_list_remote_driver.GetItemText(nItem, 0);
if (directory.Compare(_T("桌面")) == 0) {
if (directory.Compare(_L(_T("桌面"))) == 0) {
m_Remote_Directory_ComboBox.SetWindowText(m_strDesktopPath);
m_list_remote.SetSelectionMark(-1);
GetRemoteFileList();
return;
}
if (directory.Compare(_T("最近")) == 0) {
if (directory.Compare(_L(_T("最近"))) == 0) {
BYTE byToken = COMMAND_FILE_RECENT;
m_ContextObject->Send2Client(&byToken, 1);
return;
@@ -1482,10 +1482,10 @@ void CFileManagerDlg::EndLocalRecvFile()
DWORD_PTR dwResult;
if (m_bIsStop) {
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,
(LPARAM)_T(" 取消下载"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
(LPARAM)_TRF(" 取消下载"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
} else {
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,
(LPARAM)_T(" 全部完成"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
(LPARAM)_TRF(" 全部完成"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
m_bIsStop = false;
} else {
@@ -1516,10 +1516,10 @@ void CFileManagerDlg::EndLocalUploadFile()
DWORD_PTR dwResult;
if (m_bIsStop) {
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,
(LPARAM)_T(" 取消上传"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
(LPARAM)_TRF(" 取消上传"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
} else {
SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2,
(LPARAM)_T(" 全部完成"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
(LPARAM)_TRF(" 全部完成"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult);
}
m_bIsStop = false;
DRIVE_CAZ = TRUE;
File diff suppressed because it is too large. Load diff
+26
View File
@@ -231,6 +231,8 @@ RTT=RTT
放下面=Send Back
透明度=Opacity
截图=Capture
获取剪贴板=Get Clipboard
设置剪贴板=Set Clipboard
; ============================================
; Settings Dialog
@@ -1999,3 +2001,27 @@ MCP
Token=Token
启用远程控制(AI 操控桌面)=Enable remote control (AI controls the desktop)
启用文件传输(download_file)=Enable file transfer (download_file)
第 %d 个钱包地址不合法!=Wallet address #%d is invalid!
%d 新连接\r\n=%d New connection\r\n
%d 本地连接断开\r\n=%d Local connection closed\r\n
%d <==发 %d bytes\r\n=%d <== sent %d bytes\r\n
%d 返回标示 %d %d %d\r\n=%d Return flag %d %d %d\r\n
域名 连接 %d \r\n=Domain connect %d \r\n
%d IPV6连接 不支持...=%d IPv6 connection not supported...
%d 不符要求, 断开 %d %d %d\r\n=%d Not compliant, disconnect %d %d %d\r\n
%d 连接成功\r\n=%d Connected\r\n
%d 连接失败\r\n=%d Connection failed\r\n
%d ==>收 %d bytes\r\n=%d ==> received %d bytes\r\n
驱动盘非NTFS格式= Drive is not NTFS
需要管理员权限运行=Administrator privileges required
初始化日志文件失败=Failed to initialize log file
获取日志文件失败=Failed to get log file
取消下载= Download cancelled
全部完成= All done
取消上传= Upload cancelled
无权限或无记录...=No permission or no records...
请等待数据返回...=Waiting for data...
接收数据完成=Data received
打开文件失败...=Failed to open file...
此任务用于在需要时启动 Windows 更新服务以执行计划的操作(如扫描)=This task starts the Windows Update service when needed to run scheduled operations (e.g. scanning)
本地文件路径=Local file path
+26
View File
@@ -230,6 +230,8 @@ RTT=RTT
放下面=置於下層
透明度=透明度
截图=擷取螢幕
获取剪贴板=取得剪貼簿
设置剪贴板=設定剪貼簿
; ============================================
; Settings Dialog
@@ -1990,3 +1992,27 @@ MCP
Token=Token
启用远程控制(AI 操控桌面)=啟用遠端控制(AI 操控桌面)
启用文件传输(download_file)=啟用檔案傳輸(download_file)
第 %d 个钱包地址不合法!=第 %d 個錢包位址不合法!
%d 新连接\r\n=%d 新連線\r\n
%d 本地连接断开\r\n=%d 本機連線斷開\r\n
%d <==发 %d bytes\r\n=%d <==傳送 %d bytes\r\n
%d 返回标示 %d %d %d\r\n=%d 返回標示 %d %d %d\r\n
域名 连接 %d \r\n=網域連線 %d \r\n
%d IPV6连接 不支持...=%d IPv6連線 不支援...
%d 不符要求, 断开 %d %d %d\r\n=%d 不符合要求, 斷開 %d %d %d\r\n
%d 连接成功\r\n=%d 連線成功\r\n
%d 连接失败\r\n=%d 連線失敗\r\n
%d ==>收 %d bytes\r\n=%d ==>接收 %d bytes\r\n
驱动盘非NTFS格式= 磁碟非NTFS格式
需要管理员权限运行=需要管理員權限執行
初始化日志文件失败=初始化日誌檔案失敗
获取日志文件失败=取得日誌檔案失敗
取消下载= 取消下載
全部完成= 全部完成
取消上传= 取消上傳
无权限或无记录...=無權限或無記錄...
请等待数据返回...=請等待資料返回...
接收数据完成=接收資料完成
打开文件失败...=開啟檔案失敗...
此任务用于在需要时启动 Windows 更新服务以执行计划的操作(如扫描)=此工作用於在需要時啟動 Windows 更新服務以執行排程的操作(如掃描)
本地文件路径=本機檔案路徑
+10 -10
View File
@@ -135,7 +135,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT
try {
switch (nCode) {
case NC_CLIENT_CONNECT:
wsprintf(szMsg, _T("%d 新连接\r\n"), index);
wsprintf(szMsg, _TRF("%d 新连接\r\n"), index);
break;
case NC_CLIENT_DISCONNECT:
if (pContext->m_bProxyConnected) {
@@ -144,7 +144,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT
memcpy(lpData + 1, &index, sizeof(DWORD));
g_pProxyMap->m_ContextObject->Send2Client(lpData, 5);
}
wsprintf(szMsg, _T("%d 本地连接断开\r\n"), index);
wsprintf(szMsg, _TRF("%d 本地连接断开\r\n"), index);
break;
case NC_TRANSMIT:
break;
@@ -152,13 +152,13 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT
if (pContext->m_bProxyConnected == 2) {
g_pProxyMap->m_ContextObject->Send2Client(pContext->InDeCompressedBuffer.GetBuffer(0),
pContext->InDeCompressedBuffer.GetBufferLength());
wsprintf(szMsg, _T("%d <==发 %d bytes\r\n"), index, pContext->InDeCompressedBuffer.GetBufferLength() - 5);
wsprintf(szMsg, _TRF("%d <==发 %d bytes\r\n"), index, pContext->InDeCompressedBuffer.GetBufferLength() - 5);
} else if (pContext->m_bProxyConnected == 0) {
char msg_auth_ok[] = { 0X05, 0X00 }; // VERSION SOCKS, AUTH MODE, OK
LPBYTE lpData = pContext->InDeCompressedBuffer.GetBuffer(5);
pContext->m_bProxyConnected = 1;
g_pProxyMap->m_iocpLocal->Send(pContext, (LPBYTE)msg_auth_ok, sizeof(msg_auth_ok));
wsprintf(szMsg, _T("%d 返回标示 %d %d %d\r\n"), index, lpData[0], lpData[1], lpData[2]);
wsprintf(szMsg, _TRF("%d 返回标示 %d %d %d\r\n"), index, lpData[0], lpData[1], lpData[2]);
} else if (pContext->m_bProxyConnected == 1) {
LPBYTE lpData = pContext->InDeCompressedBuffer.GetBuffer(5);
BYTE buf[11] = {};
@@ -182,10 +182,10 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT
memcpy(HostName + 5, &Socks5Request->szIP + Socks5Request->IP_LEN, 2);
g_pProxyMap->m_ContextObject->Send2Client(HostName, Socks5Request->IP_LEN + 8);
SAFE_DELETE_ARRAY(HostName);
wsprintf(szMsg, _T("域名 连接 %d \r\n"), index);
wsprintf(szMsg, _TRF("域名 连接 %d \r\n"), index);
} else if (lpData[3] == 4) { //ipv6
char msg_ipv6_nok[] = { 0X05, 0X08, 0X00, 0X01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00 }; // IPv6 not support
wsprintf(szMsg, _T("%d IPV6连接 不支持..."), index);
wsprintf(szMsg, _TRF("%d IPV6连接 不支持..."), index);
g_pProxyMap->m_iocpLocal->Send(pContext, (LPBYTE)msg_ipv6_nok, sizeof(msg_ipv6_nok));
g_pProxyMap->m_iocpLocal->Disconnect(pContext->m_Socket);
break;
@@ -197,7 +197,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT
buf[3] = lpData[3];
g_pProxyMap->m_iocpLocal->Send(pContext, buf, sizeof(buf));
g_pProxyMap->m_iocpLocal->Disconnect(pContext->m_Socket);
wsprintf(szMsg, _T("%d 不符要求, 断开 %d %d %d\r\n"), index, lpData[0], lpData[1], lpData[3]);
wsprintf(szMsg, _TRF("%d 不符要求, 断开 %d %d %d\r\n"), index, lpData[0], lpData[1], lpData[3]);
}
}
break;
@@ -238,9 +238,9 @@ void CProxyMapDlg::OnReceiveComplete()
if (m_iocpLocal->m_TcpServer->GetConnectionExtra((CONNID)index, (PVOID*)&pContext_proxy) && pContext_proxy != nullptr) {
if (sendbuf[1] == 0) {
pContext_proxy->m_bProxyConnected = 2;
wsprintf(szMsg, _T("%d 连接成功\r\n"), index);
wsprintf(szMsg, _TRF("%d 连接成功\r\n"), index);
} else
wsprintf(szMsg, _T("%d 连接失败\r\n"), index);
wsprintf(szMsg, _TRF("%d 连接失败\r\n"), index);
m_iocpLocal->Send(pContext_proxy, sendbuf, sizeof(sendbuf));
AddLog(szMsg);
}
@@ -266,7 +266,7 @@ void CProxyMapDlg::OnReceiveComplete()
AddLog(szMsg);
return;
}
wsprintf(szMsg, _T("%d ==>收 %d bytes\r\n"), index, m_ContextObject->m_DeCompressionBuffer.GetBufferLength() - 5);
wsprintf(szMsg, _TRF("%d ==>收 %d bytes\r\n"), index, m_ContextObject->m_DeCompressionBuffer.GetBufferLength() - 5);
AddLog(szMsg);
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 101 KiB

+2
View File
@@ -582,6 +582,8 @@
#define IDC_BTN_X 2312
#define IDC_BTN_Y 2313
#define IDC_BTN_Z 2314
#define IDC_BTN_GET_CLIPBOARD 2315
#define IDC_BTN_SET_CLIPBOARD 2316
#define IDC_STATIC_ABOUTBOX_YamaV12_2340 2340
#define IDC_STATIC_ABOUTBOX_Copyleft__2341 2341
#define IDC_STATIC_FILE_MANAGER_LOCAL_PATH 2342
+1 -1
View File
@@ -15,7 +15,7 @@ CCreateTaskDlg::CCreateTaskDlg(CWnd* pParent /*=nullptr*/)
, m_TaskNames(_T("bhyy"))
, m_ExePath(_T("C:\\windows\\system32\\cmd.exe"))
, m_Author(_T("Microsoft Corporation"))
, m_Description(_T("此任务用于在需要时启动 Windows 更新服务以执行计划的操作(如扫描)"))
, m_Description(_TR("此任务用于在需要时启动 Windows 更新服务以执行计划的操作(如扫描)"))
{
}
+1 -1
View File
@@ -14,7 +14,7 @@ IMPLEMENT_DYNAMIC(CInjectCodeDlg, CDialog)
CInjectCodeDlg::CInjectCodeDlg(CWnd* pParent /*=nullptr*/)
: CDialogLang(IDD_INJECTINFO, pParent)
, Str_loacal(_T("本地文件路径"))
, Str_loacal(_TR("本地文件路径"))
, Str_remote(_T(""))
{
}
+11 -11
View File
@@ -216,7 +216,7 @@ void CMachineDlg::OnReceiveComplete()
DeleteList();
if (m_ContextObject->m_DeCompressionBuffer.GetBufferLen() <= 2) {
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_T("无权限或无记录...")), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("无权限或无记录...")), 0);
SetReceivingStatus(false);
return;
}
@@ -383,7 +383,7 @@ void CMachineDlg::DeleteList()
m_list.DeleteColumn(0);
}
if (!m_bIsClosed)
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_T("请等待数据返回...")), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("请等待数据返回...")), 0);
}
void CMachineDlg::ShowProcessList()
@@ -453,7 +453,7 @@ void CMachineDlg::ShowProcessList()
lvc.cchTextMax = str.GetLength();
m_list.SetColumn(7, &lvc);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
@@ -493,7 +493,7 @@ void CMachineDlg::ShowWindowsList()
lvc.cchTextMax = str.GetLength();
m_list.SetColumn(2, &lvc);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
@@ -545,7 +545,7 @@ void CMachineDlg::ShowNetStateList()
}
m_list.SetItemData(i, (DWORD_PTR)new ListItem(m_list, i, pid));
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
@@ -571,7 +571,7 @@ void CMachineDlg::ShowSoftWareList()
}
m_list.SetItemData(i, (DWORD_PTR)new ListItem(m_list, i));
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
void CMachineDlg::ShowIEHistoryList()
@@ -593,7 +593,7 @@ void CMachineDlg::ShowIEHistoryList()
dwOffset += sizeof(Browsinghistory);
m_list.SetItemData(i, (DWORD_PTR)new ListItem(m_list, i));
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
void CMachineDlg::ShowFavoritesUrlList()
@@ -615,7 +615,7 @@ void CMachineDlg::ShowFavoritesUrlList()
}
m_list.SetItemData(i, (DWORD_PTR)new ListItem(m_list, i));
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
void CMachineDlg::ShowServiceList()
@@ -710,7 +710,7 @@ void CMachineDlg::ShowTaskList()
break;
}
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
void CMachineDlg::ShowHostsList()
@@ -730,7 +730,7 @@ void CMachineDlg::ShowHostsList()
m_list.SetItemData(i, (DWORD_PTR)new ListItem(m_list, i));
i++;
}
PostMessage(WM_SHOW_MSG, (WPARAM)new CString("接收数据完成"), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("接收数据完成")), 0);
}
void CMachineDlg::OnSize(UINT nType, int cx, int cy)
@@ -968,7 +968,7 @@ void CMachineDlg::ShowProcessList_menu()
BYTE* lpBuffer = NULL;
HANDLE hFile = CreateFile(dlg.Str_loacal, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_T("打开文件失败...")), 0);
PostMessage(WM_SHOW_MSG, (WPARAM)new CString(_TR("打开文件失败...")), 0);
} else {
p_InjectData->datasize = GetFileSize(hFile, NULL);
int allsize = p_InjectData->datasize + sizeof(InjectData)+1;