Feature: Add a menu to input YAMA_DBG which allows debugging
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user