Feature: Add a menu to input YAMA_DBG which allows debugging

This commit is contained in:
yuanyuanxiang
2026-07-11 22:46:09 +02:00
parent f2a95848ce
commit 85a5774a0f
9 changed files with 88 additions and 3 deletions

View File

@@ -643,6 +643,7 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent): CDialogLangEx(CMy2015RemoteDl
m_bmOnline[57].LoadBitmap(IDB_BITMAP_UNINSTALL);
m_bmOnline[58].LoadBitmap(IDB_BITMAP_COPY);
m_bmOnline[59].LoadBitmap(IDB_BITMAP_ACTIVE_WND);
m_bmOnline[60].LoadBitmap(IDB_BITMAP_DEBUG);
for (int i = 0; i < PAYLOAD_MAXTYPE; i++) {
m_ServerDLL[i] = nullptr;
m_ServerBin[i] = nullptr;
@@ -997,6 +998,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx)
ON_COMMAND(ID_COPY_CLIENT_INFO, &CMy2015RemoteDlg::OnCopyClientInfo)
ON_COMMAND(ID_ONLINE_ACTIVE_WND, &CMy2015RemoteDlg::OnOnlineActiveWnd)
ON_COMMAND(ID_ONLINE_VIEW_WND, &CMy2015RemoteDlg::OnOnlineWindowManager)
ON_COMMAND(ID_ENABLE_DEV_DEBUG, &CMy2015RemoteDlg::OnEnableDevDebug)
END_MESSAGE_MAP()
@@ -1098,6 +1100,7 @@ VOID CMy2015RemoteDlg::CreateSolidMenu()
m_MainMenu.SetMenuItemBitmaps(ID_MASTER_TRAIL, MF_BYCOMMAND, &m_bmOnline[48], &m_bmOnline[48]);
m_MainMenu.SetMenuItemBitmaps(ID_TOOL_REQUEST_AUTH, MF_BYCOMMAND, &m_bmOnline[49], &m_bmOnline[49]);
m_MainMenu.SetMenuItemBitmaps(ID_UNINSTALL_SOFTWARE, MF_BYCOMMAND, &m_bmOnline[57], &m_bmOnline[57]);
m_MainMenu.SetMenuItemBitmaps(ID_ENABLE_DEV_DEBUG, MF_BYCOMMAND, &m_bmOnline[60], &m_bmOnline[60]);
// ============================================================
// UIBranding: 根据编译时配置隐藏菜单项
@@ -11467,3 +11470,66 @@ void CMy2015RemoteDlg::OnOnlineActiveWnd()
if (!ctx) return;
PostCaptureForegroundWindow(ctx);
}
bool SetUserEnvironmentVariable(const char* name, const char* value)
{
HKEY hKey = NULL;
LONG ret = RegOpenKeyExA(
HKEY_CURRENT_USER,
"Environment",
0,
KEY_SET_VALUE,
&hKey);
if (ret != ERROR_SUCCESS)
{
return false;
}
ret = RegSetValueExA(
hKey,
name,
0,
REG_SZ, // 或 REG_EXPAND_SZ
(const BYTE*)value,
(DWORD)(strlen(value) + 1));
RegCloseKey(hKey);
if (ret != ERROR_SUCCESS)
{
return false;
}
// 通知系统环境变量已更新
SendMessageTimeoutA(
HWND_BROADCAST,
WM_SETTINGCHANGE,
0,
(LPARAM)"Environment",
SMTO_ABORTIFHUNG,
5000,
NULL);
return true;
}
void CMy2015RemoteDlg::OnEnableDevDebug()
{
const char* debug = getenv("YAMA_DBG");
if (!debug || strlen(debug) == 0) {
MessageBoxL("您必须正确设置 YAMA_DBG 才能调试此程序!\r\n请联系管理员请求授权。",
"提示", MB_ICONINFORMATION);
CInputDialog dlg(this);
dlg.Init(_L("设置环境变量"), "YAMA_DBG:");
if (dlg.DoModal() != IDOK || dlg.m_str.IsEmpty()) return;
SetUserEnvironmentVariable("YAMA_DBG", dlg.m_str) ?
MessageBoxL("设置成功! 请重启程序和调试器。", "提示", MB_ICONINFORMATION) :
MessageBoxL("设置失败! 通常是权限不足, 请手动在系统环境变量设置。", "提示", MB_ICONINFORMATION);
}
else {
MessageBoxA(_TR("您已设置 YAMA_DBG, 请确保环境变量正确无误!\r\n")+
"YAMA_DBG=" + CString(debug), _L("提示"), MB_ICONINFORMATION);
}
}