static HWND g_parse_button;\r
\r
static BOOL g_ShowHelp = FALSE;\r
+static BOOL g_SaveAs = FALSE;\r
static WCHAR g_CmdInFile[MAX_PATH];\r
static WCHAR g_CmdOutFile[MAX_PATH];\r
\r
}\r
\r
\r
+static BOOL VentoyGetSaveFileName(HWND hWnd, WCHAR *szFile)\r
+{\r
+ OPENFILENAME ofn = { 0 };\r
+\r
+ ofn.lStructSize = sizeof(ofn);\r
+ ofn.hwndOwner = hWnd;\r
+ ofn.lpstrFilter = L"Vlnk File\0*.vlnk.iso;*.vlnk.img;*.vlnk.wim;*.vlnk.efi;*.vlnk.vhd;*.vlnk.vhdx;*.vlnk.vtoy;*.vlnk.dat\0";\r
+ ofn.nFilterIndex = 1;\r
+ ofn.lpstrFile = szFile;\r
+ ofn.nMaxFile = MAX_PATH;\r
+ ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;\r
+ ofn.lpstrFileTitle = NULL;\r
+ ofn.nMaxFileTitle = 0;\r
+ ofn.lpstrInitialDir = NULL;\r
+\r
+ return GetSaveFileName(&ofn);\r
+}\r
+\r
static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile)\r
{\r
int i;\r
int end;\r
int len;\r
+ BOOL SetOutFile = FALSE;\r
UINT32 DiskSig;\r
DISK_EXTENT DiskExtend;\r
OPENFILENAME ofn = { 0 };\r
return 1;\r
}\r
\r
+\r
Buf = malloc(VLNK_FILE_LEN);\r
if (Buf)\r
{\r
if (OutFile)\r
{\r
wcscpy_s(DstFullPath, MAX_PATH, OutFile);\r
+ SetOutFile = TRUE;\r
}\r
else\r
{\r
DefaultVlnkDstFullPath(Pos + 1, Dir, DstFullPath);\r
+\r
+ if (g_SaveAs)\r
+ {\r
+ wcscpy_s(szFile, MAX_PATH, DstFullPath);\r
+ if (VentoyGetSaveFileName(hWnd, szFile))\r
+ {\r
+ wcscpy_s(DstFullPath, MAX_PATH, szFile);\r
+ SetOutFile = TRUE;\r
+ }\r
+ else\r
+ {\r
+ LogA("User cancel the save as diaglog, use default name\n");\r
+ }\r
+ }\r
}\r
\r
LogW(L"vlnk output file path is <%ls>\n", DstFullPath);\r
\r
LogW(L"Vlnk file create success <%ls>\n", DstFullPath);\r
\r
- if (OutFile)\r
+ if (SetOutFile)\r
{\r
swprintf_s(Msg, 1024, L"%ls\r\n\r\n%ls", g_msg_lang[MSGID_VLNK_SUCCESS], DstFullPath);\r
VtoyMessageBox(hWnd, Msg, g_msg_lang[MSGID_INFO], MB_OK | MB_ICONINFORMATION);\r
return 0;\r
}\r
\r
-\r
static int ParseVlnk(HWND hWnd)\r
{\r
int i;\r
{\r
g_ShowHelp = TRUE;\r
}\r
+ else if (lstrcmp(lpszArgv[i], L"-s") == 0 || lstrcmp(lpszArgv[i], L"-S") == 0)\r
+ {\r
+ g_SaveAs = TRUE;\r
+ }\r
else if (lstrcmp(lpszArgv[i], L"-i") == 0 || lstrcmp(lpszArgv[i], L"-I") == 0)\r
{\r
if (i + 1 < argc)\r