-#include <Windows.h>\r
+#include <Windows.h>\r
#include <Shlobj.h>\r
#include <tlhelp32.h>\r
#include <Psapi.h>\r
#include <ventoy_disk.h>\r
#include <ventoy_http.h>\r
\r
-char g_ventoy_dir[MAX_PATH];
+char g_ventoy_dir[MAX_PATH];\r
\r
+static BOOL g_ChromeFirst = TRUE;\r
static BOOL g_running = FALSE;\r
static HWND g_refresh_button;\r
static HWND g_start_button;\r
\r
const WCHAR *g_msg_cn[MSGID_BUTT] =\r
{\r
- L"´íÎó",\r
- L"ÌáÐÑ",\r
- L"ÇëÔÚ Ventoy Å̸ùĿ¼ÏÂÔËÐб¾³ÌÐò£¡£¨´æ·ÅISOÎļþµÄλÖã©",\r
- L"´´½¨ ventoy Ŀ¼ʧ°Ü£¬ÎÞ·¨¼ÌÐø£¡",\r
- L"ventoy Ŀ¼´æÔÚ£¬µ«ÊÇ´óСд²»Æ¥Å䣬ÇëÏȽ«ÆäÖØÃüÃû£¡",\r
- L"ÄÚ²¿´íÎ󣬳ÌÐò¼´½«Í˳ö£¡",\r
- L"Ë¢ÐÂ",\r
- L"Æô¶¯",\r
- L"ֹͣ",\r
- L"Á´½Ó",\r
- L"Í˳ö",\r
-\r
- L"Í£Ö¹ÔËÐкóä¯ÀÀÆ÷Ò³Ãæ½«»á¹Ø±Õ£¬ÊÇ·ñ¼ÌÐø£¿",\r
- L"µ±Ç°·þÎñÕýÔÚÔËÐУ¬ÊÇ·ñÍ˳ö£¿",\r
- L"ÇëÏȹرÕÕýÔÚÔËÐÐµÄ VentoyPlugson ³ÌÐò£¡",\r
- L"ventoy\\plugson.tar.xz Îļþ²»´æÔÚ£¬ÇëÔÚÕýÈ·µÄĿ¼ÏÂÔËÐУ¡",\r
+ L"错误",\r
+ L"提醒",\r
+ L"请在 Ventoy 盘根目录下运行本程序!(存放ISO文件的位置)",\r
+ L"创建 ventoy 目录失败,无法继续!",\r
+ L"ventoy 目录存在,但是大小写不匹配,请先将其重命名!",\r
+ L"内部错误,程序即将退出!",\r
+ L"刷新",\r
+ L"启动",\r
+ L"停止",\r
+ L"链接",\r
+ L"退出",\r
+\r
+ L"停止运行后浏览器页面将会关闭,是否继续?",\r
+ L"当前服务正在运行,是否退出?",\r
+ L"请先关闭正在运行的 VentoyPlugson 程序!",\r
+ L"ventoy\\plugson.tar.xz 文件不存在,请在正确的目录下运行!",\r
};\r
const WCHAR *g_msg_en[MSGID_BUTT] =\r
{\r
L"ventoy\\plugson.tar.xz does not exist, please run under the correct directory!",\r
};\r
\r
+#define UTF8_Log(fmt, wstr) \\r
+{\\r
+ memset(TmpPathA, 0, sizeof(TmpPathA));\\r
+ WideCharToMultiByte(CP_UTF8, 0, wstr, -1, TmpPathA, sizeof(TmpPathA), NULL, NULL);\\r
+ vlog(fmt, TmpPathA);\\r
+}\r
+\r
+\r
const WCHAR **g_msg_lang = NULL;\r
\r
HINSTANCE g_hInst;\r
\r
static BOOL OnDestroyDialog()\r
{ \r
- ventoy_http_exit();
+ ventoy_http_exit();\r
ventoy_disk_exit();\r
#ifndef VENTOY_SIM \r
ventoy_www_exit();\r
\r
sprintf_s(url, sizeof(url), "http://%s:%s/index.html", g_sysinfo.ip, g_sysinfo.port);\r
\r
- for (i = 0; Browsers[i] != NULL; i++)\r
- {\r
- if (ventoy_is_file_exist("%s", Browsers[i]))\r
- {\r
- ShellExecuteA(NULL, "open", Browsers[i], url, NULL, SW_SHOW);\r
- return;\r
- }\r
- }\r
+ if (g_ChromeFirst)\r
+ {\r
+ for (i = 0; Browsers[i] != NULL; i++)\r
+ {\r
+ if (ventoy_is_file_exist("%s", Browsers[i]))\r
+ {\r
+ ShellExecuteA(NULL, "open", Browsers[i], url, NULL, SW_SHOW);\r
+ return;\r
+ }\r
+ }\r
+ }\r
\r
ShellExecuteA(NULL, "open", url, NULL, NULL, SW_SHOW);\r
}\r
{\r
InitDialog(hWnd, wParam, lParam);\r
break;\r
- } \r
+ }\r
case WM_CLOSE:\r
{\r
if (g_running)\r
\r
OnDestroyDialog();\r
EndDialog(hWnd, 0);\r
+ break;\r
}\r
}\r
\r
\r
//\r
//copy from Rufus\r
+//Copyright © 2011-2021 Pete Batard <pete@akeo.ie>\r
//\r
#include <delayimp.h>\r
// For delay-loaded DLLs, use LOAD_LIBRARY_SEARCH_SYSTEM32 to avoid DLL search order hijacking.\r
\r
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)\r
{\r
+ int i;\r
int rc;\r
+ int status = 0;\r
HANDLE hMutex;\r
+ WCHAR* Pos = NULL;\r
WCHAR CurDir[MAX_PATH];\r
+ WCHAR ExePath[MAX_PATH];\r
+ WCHAR CurDirBk[MAX_PATH];\r
+ WCHAR ExePathBk[MAX_PATH];\r
+ CHAR TmpPathA[MAX_PATH];\r
\r
UNREFERENCED_PARAMETER(hPrevInstance);\r
\r
+ for (i = 0; i < __argc; i++)\r
+ {\r
+ if (__argv[i] && _stricmp(__argv[i], "/F") == 0)\r
+ {\r
+ g_ChromeFirst = FALSE;\r
+ break;\r
+ }\r
+ }\r
+\r
DllProtect();\r
\r
if (GetUserDefaultUILanguage() == 0x0804)\r
}\r
\r
GetCurrentDirectoryW(MAX_PATH, CurDir);\r
+ GetCurrentDirectoryW(MAX_PATH, CurDirBk);\r
+ GetModuleFileNameW(NULL, ExePath, MAX_PATH);\r
+ GetModuleFileNameW(NULL, ExePathBk, MAX_PATH);\r
+\r
+ for (Pos = NULL, i = 0; i < MAX_PATH && ExePath[i]; i++)\r
+ {\r
+ if (ExePath[i] == '\\' || ExePath[i] == '/')\r
+ {\r
+ Pos = ExePath + i;\r
+ }\r
+ }\r
+\r
+ if (Pos)\r
+ {\r
+ *Pos = 0;\r
+ if (wcscmp(CurDir, ExePath))\r
+ {\r
+ status |= 1;\r
+ SetCurrentDirectoryW(ExePath);\r
+ GetCurrentDirectoryW(MAX_PATH, CurDir);\r
+ }\r
+ else\r
+ {\r
+ status |= 2;\r
+ }\r
+ }\r
+\r
+ Pos = wcsstr(CurDir, L"\\altexe");\r
+ if (Pos)\r
+ {\r
+ *Pos = 0;\r
+ status |= 4;\r
+ SetCurrentDirectoryW(CurDir);\r
+ }\r
+\r
+\r
WideCharToMultiByte(CP_UTF8, 0, CurDir, -1, g_cur_dir, MAX_PATH, NULL, 0);\r
\r
sprintf_s(g_ventoy_dir, sizeof(g_ventoy_dir), "%s", g_cur_dir);\r
- sprintf_s(g_log_file, sizeof(g_log_file), "%s\\%s", g_cur_dir, LOG_FILE);\r
+ sprintf_s(g_log_file, sizeof(g_log_file), "%s", LOG_FILE);\r
ventoy_log_init();\r
\r
+ vlog("====================== Ventoy Plugson =========================\n");\r
+\r
+ UTF8_Log("Current Directory <%s>\n", CurDirBk);\r
+ UTF8_Log("Exe file path <%s>\n", ExePathBk);\r
+ \r
+ if (status & 1)\r
+ {\r
+ UTF8_Log("Change current dir to exe <%s>\n", ExePath);\r
+ }\r
+ if (status & 2)\r
+ {\r
+ vlog("Current directory check OK.\n");\r
+ }\r
+ if (status & 4)\r
+ {\r
+ UTF8_Log("altexe detected, change current dir to <%s>\n", CurDir);\r
+ }\r
+\r
+\r
if (!ventoy_is_file_exist("%s\\ventoy\\%s", g_ventoy_dir, PLUGSON_TXZ))\r
{ \r
MessageBoxW(NULL, g_msg_lang[MSGID_NO_TARXZ_TIP], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);\r
}\r
\r
vlog("===============================================\n");\r
- vlog("===== Ventoy Plugson %s:%s =====\n", g_sysinfo.ip, g_sysinfo.port);\r
+ vlog("========= Ventoy Plugson %s:%s =========\n", g_sysinfo.ip, g_sysinfo.port);\r
vlog("===============================================\n");\r
\r
\r
ventoy_http_init();\r
\r
g_hInst = hInstance;\r
- DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);\r
+ DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);\r
\r
return 0;\r
}\r