Fix: Modern Terminal blank under SYSTEM; precise reason in info list
This commit is contained in:
@@ -5618,12 +5618,23 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
|
||||
break;
|
||||
}
|
||||
case TOKEN_TERMINAL_START: { // Linux PTY 终端 (WebView2 + xterm.js)
|
||||
// 检查 WebView2 和 DLL,都满足则使用现代终端,否则退化到经典终端
|
||||
if (IsWebView2Available() && LoadTerminalModule()) {
|
||||
// 三个前置条件,缺任何一个都回退到经典终端,并把原因贴到信息列表。
|
||||
// SYSTEM 场景:WebView2 不支持 LocalSystem token,会出现"窗口能弹但页面空白",
|
||||
// 显式拦截一次,避免用户误以为是 bug。
|
||||
const char* fallbackReason = nullptr;
|
||||
if (IsRunningAsSystem()) {
|
||||
fallbackReason = "Modern Terminal does not support SYSTEM, falling back to classic";
|
||||
} else if (!IsWebView2Available()) {
|
||||
fallbackReason = "WebView2 Runtime not installed, falling back to classic";
|
||||
} else if (!LoadTerminalModule()) {
|
||||
fallbackReason = "TerminalModule.dll load failed, falling back to classic";
|
||||
}
|
||||
|
||||
if (fallbackReason == nullptr) {
|
||||
g_2015RemoteDlg->SendMessage(WM_OPENTERMINALDIALOG, 0, (LPARAM)ContextObject);
|
||||
} else {
|
||||
g_2015RemoteDlg->PostMessageA(WM_SHOWMESSAGE,
|
||||
(WPARAM)new CharMsg("To use Modern Terminal - WebView2 and TerminalModule.dll are required"), NULL);
|
||||
g_2015RemoteDlg->PostMessageA(WM_SHOWMESSAGE,
|
||||
(WPARAM)new CharMsg(fallbackReason), NULL);
|
||||
g_2015RemoteDlg->SendMessage(WM_OPENSHELLDIALOG, 0, (LPARAM)ContextObject);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user