From f130325a9c79b5959b4afd7e9e0be7d724b53e0a Mon Sep 17 00:00:00 2001 From: longpanda Date: Thu, 17 Feb 2022 10:39:04 +0800 Subject: [PATCH] Add commad line option -s in VentoyVlnk.exe. --- Vlnk/src/main_windows.c | 43 +++++++++++++++++++++- Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe | Bin 120832 -> 120832 bytes 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Vlnk/src/main_windows.c b/Vlnk/src/main_windows.c index 0646040..ba195f2 100644 --- a/Vlnk/src/main_windows.c +++ b/Vlnk/src/main_windows.c @@ -14,6 +14,7 @@ static HWND g_create_button; static HWND g_parse_button; static BOOL g_ShowHelp = FALSE; +static BOOL g_SaveAs = FALSE; static WCHAR g_CmdInFile[MAX_PATH]; static WCHAR g_CmdOutFile[MAX_PATH]; @@ -363,11 +364,30 @@ End: } +static BOOL VentoyGetSaveFileName(HWND hWnd, WCHAR *szFile) +{ + OPENFILENAME ofn = { 0 }; + + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = hWnd; + ofn.lpstrFilter = L"Vlnk File\0*.vlnk.iso;*.vlnk.img;*.vlnk.wim;*.vlnk.efi;*.vlnk.vhd;*.vlnk.vhdx;*.vlnk.vtoy;*.vlnk.dat\0"; + ofn.nFilterIndex = 1; + ofn.lpstrFile = szFile; + ofn.nMaxFile = MAX_PATH; + ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + ofn.lpstrInitialDir = NULL; + + return GetSaveFileName(&ofn); +} + static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile) { int i; int end; int len; + BOOL SetOutFile = FALSE; UINT32 DiskSig; DISK_EXTENT DiskExtend; OPENFILENAME ofn = { 0 }; @@ -500,6 +520,7 @@ static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile) return 1; } + Buf = malloc(VLNK_FILE_LEN); if (Buf) { @@ -510,10 +531,25 @@ static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile) if (OutFile) { wcscpy_s(DstFullPath, MAX_PATH, OutFile); + SetOutFile = TRUE; } else { DefaultVlnkDstFullPath(Pos + 1, Dir, DstFullPath); + + if (g_SaveAs) + { + wcscpy_s(szFile, MAX_PATH, DstFullPath); + if (VentoyGetSaveFileName(hWnd, szFile)) + { + wcscpy_s(DstFullPath, MAX_PATH, szFile); + SetOutFile = TRUE; + } + else + { + LogA("User cancel the save as diaglog, use default name\n"); + } + } } LogW(L"vlnk output file path is <%ls>\n", DstFullPath); @@ -524,7 +560,7 @@ static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile) LogW(L"Vlnk file create success <%ls>\n", DstFullPath); - if (OutFile) + if (SetOutFile) { swprintf_s(Msg, 1024, L"%ls\r\n\r\n%ls", g_msg_lang[MSGID_VLNK_SUCCESS], DstFullPath); VtoyMessageBox(hWnd, Msg, g_msg_lang[MSGID_INFO], MB_OK | MB_ICONINFORMATION); @@ -580,7 +616,6 @@ static CHAR GetDriveLetter(UINT32 disksig, UINT64 PartOffset) return 0; } - static int ParseVlnk(HWND hWnd) { int i; @@ -728,6 +763,10 @@ static int ParseCmdLine(LPSTR lpCmdLine) { g_ShowHelp = TRUE; } + else if (lstrcmp(lpszArgv[i], L"-s") == 0 || lstrcmp(lpszArgv[i], L"-S") == 0) + { + g_SaveAs = TRUE; + } else if (lstrcmp(lpszArgv[i], L"-i") == 0 || lstrcmp(lpszArgv[i], L"-I") == 0) { if (i + 1 < argc) diff --git a/Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe b/Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe index f046a4f7f69df82772ca6b41f207f6def08f6a01..4e37e435c2ed61067fac1a026baeb5213237e6ae 100644 GIT binary patch delta 11464 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 Zenll9_8eq9=_Hpz;@fc`>LNOh{tqKZx=jE8 delta 11177 zcmeHsdt4ON`~RE;WK|SIz!ecuK}j*^w!1UCGqa0=S2Vn#c(2q}G(`oqQWsq)a6!?d zf#oePY2~%0yk;mSsAy&U4Or zZs*Kw);|BNeg1_4YFH&EPL$3cjZEIqgoiKe-%tqchcB$$@S#@j+dx72;B#mAR_3p+|BeK_nqR;=-O*FA*k|1 zo;=+v=wn|4LS?wUUnD#^zfSNR;}>TsizfmhGArf&(FEZ-8S5VMm^n95E^ddjn%Q-A9r1}~0y1Ew zS$xV@ozxyd1qF|vD2lx2siJ6|azxtumlG1gp-C$`q9&Cro*SL0;-wttrnGoh}e>lLH7=X+JKBPBgRG1i^MU-^&F z9c+hV^&OFb<3kL1qP_>pzyJHs1YI z;$s1EVIc(x(OeploR<-8C{KtMRP)QdR=4VeTH&ZxDG{GqRjmXRWJg~CPL7h%X0$d* zvixHNUfn7d5%@?e)6n65U=44dWJm6s@r2y`PepN^)He~8&^S9Nq`{^51?E5TC5UOR zqngO)1G9f=Y<>qbSORl?^u@N;1I8Xyr4U{zwR@oph$@C2$x!C2rK4KyakW96M_r)G zbojod8h>k$x@vt+X<+tYpf)iBH0GQ5TI(?X5UoBPKW!c6G-&mtra>96G!2N-7|b)q z&?ZK##t47LFg7trje(vqBHW>>wcY2_f)v_4+#pxp*Yr|*1YF0#LT~vY#)18ueOrTi zOEaGXH`g3qa}uxDp9cRA%ozv+KnSU%N7S02&Ri_W*EA>>KT?#O(v1IoXzOP~$=XLc zZK&5)%>BRv`e`|*GYoi4PzNa_=e|25Iv_LHk)STD#RGMzzO{#7h$PcPsW<8S2Zu8v$1|1dc8( z7#SUqJT0(oLUgozTho^B|8aM_pGk|Vb-n`)2ayF%+$<1Q-2m&)Q3A7*n#gIyXnC3$ zI7!ilf;HOW!Fxt48PTySWJ^onB}7L65hgXL&ZY)=qtDMaXwh&d7|1e^-Di{K2F(F| zy%Z<77E-5M~CgGNqFyj&tWn%g|&h+%^g=pIL4?8 zzKwrs+r9IN-xX!F6>diDN{mOm^Il!X2YDd_(tgS=p=3% zMoF=Z<^)XXw7i@e2t7wLh=AmRoa<0emRtOdE5k|RXyN7FhI+Dmm&VJ&EV}eud@Rg5 zO2`AzL+iAJP_VY4~RhOBKs$@rdP12-8?{Srf zhqlY^v%Hy>P2&G)4ebo|W|IM+vc_!kuVTt@h+$>Izh|Ola5j3!3jaFx3AmhkVg?>7 zO_sCqEkkF2hq_bSFF3G$!k~PpH+pfj|G#>1lh3sEI&n@7*gCm!Ds`9Odd#_TvITEw zKgu};yfTewI$PaC^l8wP>+fk=O+!r#rgS2#=|m85Pz}gw){4x*Ze!C}?a00iW94d4 zzdFcEc{XU6$}9bk7Sqp&Fl(mXM+qH|Gs1f~7pmT(geJjq+;#5628i?()!>sOM!Usm z;2lw2-LW1vub7l?)T3#uO4#-{!fKVU>lq>AHAl%`jhT+4e>M6#PX5&}IV$twhc$}L zXyv%{jFmaqI-y~4KV`nJmcSgU`^eKFF+zH~(_7{Bc*aw0Ee~nrwJrC%gx7b7?8<JaAvYoNfyGigL#EA5^WYR4!d8g6afA|jpI zO+~w;gmR!0M+4lI9Cu-?cYW&BO-_LX2Ny9p4&2NoUV>#2?o552cDc%6nmqdN=Sdal zEe(8XImpq&0}P`jE3lMm@unex+0I<(*_4tpmN=@QvmAOyGpj>YfD&qeWw{!ZjE*~l zGTUnk(-_QYxuZ8wHIW+4LAcfB-hP%p|2pjc%6oy{ND0!`^c*;c7Oq|)f;zqk#zQ`Z z_18t)Vd-g8Aw@dyjE)Xns*Jzxn2v7Yev$p{4(QC>FHfvVhe~81cGsar_>ZV*D9bax^CKT!pNTj%CKaW7JTc96x)by8 zvF@oT+hd4*(+3seO+A;Od>k3K1MS17;x?i}&(vO}2xa4Ly^~R~XF>0~I$c%1XDU4q zp>23C6NWb9Q_Nnp(=(r)jdXSS_?B@S3i9Ne47!l@pjOrAcY*;566NF(O6X3{LGEiE zB0VdtMJQ&Us`sJ3N?x-&%~RwZKPgHob01=U7tklUPfaXK(>uoCLEtMmxu@eqh$j$4Y1^{wlsRI*9*>pWeL~ z4B^OvhkOnel$r|3wy)#PT00?6o<$JlzR`=+4hwNkpTY3@bD_^B*xQ`Gi7>-~zP-Dz z0olBN#%=4Px&0Nha@k#{T34m!`74(dV->sxxQ)fQRYI?JyHr8z)tQcfKc}WTN>su= z&#;7Kgevit#6zgUGrnKBkFKTw#|#>(D=qM34vNzu!m}l*7eZB@sv(ulbQ9A&8%O#z zg9U6G+Y_EuW4nV58pihX?fCFTJ5f5xPSgViPPP;80CoWC0i8VKCVh&~B^>-B3D3SS z^5_a){9;^-E3nuJWobc#7K?Vq#N$z#%^Ve&!gmwX~8EwB@>WZH>$0lxr*`LGB827JB1BV+_2)PRR%M!@@G zT4to~u^lhZjA~1O5+;<5a^H2`O(;k_3VBnHKg+Zt8UL9%%s&9QZeyuu*nF4Hazk4w zbcJNAgx>u}s}5Q)w!Vp|nnCTab*=HVer13+>RzLJ%NvT*9s{h+><%X*_D*t)DoSYaQ? zILKWmzXg@lRO_jXh|%&J_>E;9(KmSAvbWLKm~>^K&7S?Pbx0Rm=t;_1jo=0B$2YH` zxA5_|E}|08n%w=UTRzMQhXs>ZpO*+eszw2&R-!-!P$@{f3#*90GnV&FoSYv|e6Bw3 zv~)Lv_34x<*C}7?gSo#=npl=H`j|uItB-%ozgFTTDUu&Sacm`fcUFefv4o(MOQq-3L1P-EFQEv zA9nN2>Lhg26OG#-6z4ImS*aUk*lH(~ng``@To9R|$7^-2>preO^>cgtzFmo4t8xq7 z<%dc)@VkX4U=Tn5h^&m3ndNKm(CLvWE+zH&q?fftRf>yNAFvC30vaT;y& zKWKK1w(akF$e>~%r}^Bu z`JUFXW3gvziLW1g^xAo79E61LVY{wkCGL0l82S$T9kHT2p7K_7ijZT>^g1`s-a&9}{wK=;ThU207s>TM1Pca=*VX%INHEtGVA*ZolJlXWnp6xZ+-1 z14}E$JIZ*Jg0GcL=}`~wD(X6#c~=J$!_lS4@PbCTPszRCQ}>g316EgsXP=xKQ2m;s zloRmUM93TPe@?bz%NW835~7vzq(m*>KAhYeuwwA#&IS1@)x~2Hy%nM z4zdu`BWzL>=00c#bmvl@W(LXc;OJ9{s0yc@vgmIvP?S7U4#vAqJ>UH&Xf#UN$D#M}jB}FVdOB>};7$y1=@q&89C%#`8<%I0zsASUoi?DqGh?CQW!B>@ z=U2uQ!)ug#aX_9woN$?4<-xO6L9ReW&V*Vy0pB(VISr?L*#mXMOTVZ@~KxYz_2U0^frYs$$T6oK`hm zSo;l(uEsJn2vcm1hkwwK>~RZ*65E|@oCgkqLW`xT}3cW|{dRFGJmH=#Ni zh;wk@h48kU;adT?xOy}nA2CAh+zSgA9#F>1s_O@}JQ0|E6U2B~Q9$f^LY<`nKK-m$ z1^Q?QsacM|Q!Xa>zqME0QX9PYVh6MlpS{QhPyM=4PDXpLjFC9>t3-4RkNc|3kgI*V ziBPphH`#q=nxeq&!+p$h6drM@mw(JSMS=GsPxd9wXIz{=T+#h}_rw#1AV{eMRLcGI z@caOp<$eKB^J$~jf}oZQwXGpq7Xv(pXk#Owc3kTm1-0k2S~S!`JngP5_Juq4+Um_Z zeF-QV%#nq~AKz#ru;ANes#p9kqDY*tn#{cV)u5$nNNMGL$hD8??t9&RU z)N&Wlt^gjli^m;`y7|ChoKVzNE7OWPbW?@FG3tb3CSVF+JYXas36KB~V8};B{X^BR zZbg;88L$gb3LO99m&NFCm7|^Pm)dLc{_SLs1r{tz?Oez~eLNt$eLUV#9O(l@Tv6Oz z7ad;oVrxWpQ#--3u0WR>fDEVuGyn)-=>Z*JNdI;HL%fr-KoI~*fXU$pf&nfU$3`K~7>dEMOzxW59WU z40s4=u@({GfH;5&&<8LSFcFXecoVP&@FCzR;5^_epdQfrZA5efNPt0rX@G3NEwqf2F@UbIkJj;d?MV=WB|DKi!%kc{Y$p~Sw-eI~?Ts9QU;QAmk%LIPgbz^sb;gdHulZDQKbpf$wIb zcMyy&dVdx=RrGiUsw$c}8!bEVbT;ati%5o>yn00*J|ba+k8PrO*7wqorTVTPl?KFd zMG13JQj4l|V9z6n($lLthZXIciwr(Fl)dPqxu~Nq+FW#dE(-VmgR>LOc`wnYUToy9 zk1rZD4@IJOMbqb@PJ!k9?Sy*5gE-=={`R8T^HBRhH1IEC&_FLyw|G#|cQDXr#|w>; z&W|ce1A^|YQAL&vC=eS`o2X>9#v?jRyXlrX~r+Cy!!~LhLMmpR$k@bj1jG^G#X#}XhrU6I)OMq|D zHJC>?>I-cxy&JyxXZQb}@2xMrd{yM3^Np&wdQKaxyL~~Mcl5sA@kAxyN}<;U)Xw|B z&GdE%R0y)Bp9$PsqlKR5h8%MGVd|EU=VRxL!$ zbqDsmj)wa|t{(G#7HZw?KVRF4|2qzJTY;{cQ9zO3Ddctz;Vis^U&629AMnWHZ+Xrl zTE-CjlQN(Q#TW1vYUpO z#+qI+Ej4X0?KT}UIq#bYv!A(@Ioup&?qN2W6U`&dlgv}hv&|Xi*UT>S+vd&Y56m9( zaq}tjd2_Y-w)vh}G5c|CIRh8RQJj@a{MGmOb&Rx)du zcbWH?9n2o)6XqyW#++d;FjtrwMrP`m$BZA_f(>HB*=Uw!6WEdL1lD6bW)jUe&CR$r zTs!VLj^P9@o6F-ccbPNuFY}3(9800)ZA(AvdTWZ1Cy1g;Tqim&iY!=bqLeGGl-`y$ zNS{b2rSsDF(oN|PX@Ko@+gcl}&Q1{O-v)kE1T~VHPA#CasE;Tb%#ukjrgP~{^db5Z zT}|Jnf2E(&am;9D1#^=5hIxg3mp#F@GP*$3z070HtIhA2ADI!?19Uclo6ardHaNK- zIg+>V7IGf8JuY#9R7X##vsmEU+%Ieq+6A{nh#hxZZGKrtq4uUDzvJ z5o&~5;hqp8ju9t|^TZ{vA1rPHXWT0u62BDd#6oF@R3ep1RnleYmekA^Ve4j#vzcvU zZIf&>Z0WX@wmUZPKO&hRZa@)2b|=l`d~yX@OqP&G$m8UfJ91)b%*+mdO$s)y3k4Ve7Zf`jXlZUV*4708ecZfF=AtYDZ~_I>SZ#TL{lO-T#9KD zxZFI`8>RwNv1zkur)eL!-U-tg(-o(w#?;T8WZq={5L}GqEL=R-pPR&Ga%;E}?knyF zSIhm%A>N-4<~#7QJjsjvLj>@q$B`3zl6aY!W^e4hqMF zBq_s|Z#$}*a56!tN3%lrVLvmL8EcKd8rzuKnViSW6D==UrdiS~vn+Eh^DVDi##%G1 zORa_0cdWatN318TUsIFq$#RPG-xKvy#ZV`8g zI>}}G#CFN{yG@;KBuvdY<+C~Y=dk=ZNqITU^S4I1=lFZ7fECaIi8$JW{|Iwc_b#+ zkvqwc$%Et>vYLEAK7s5JOHmY04Wp(&4oTM>HivRkm@1|=QtyNF?xzk>$EcH(vy!?% zeM9|7-Jot$_cW{e(Jkm8+CX=tyV5;rk~Yy2-IpFn52I7)@$?jWIz5|SKrf<~(aY(T z^cs2ty@lRM@1sAVkI-dw1$~~rOn*;bqigA3=z97wjTnC>kO^VJnJ!FsrWa#mER3BQ zzzktVFyoxeWM&#Oiv^#D8MBZSk`XvL;(c zgGp~#A6N%~3HJ(L2zLbMRIuAF@vK-S-ItK9t8Koj=0do@L6Js&OZ`GMP){je(8(-% z9__;hvjf>t>^gQkyPqv(&$6|wpRtuO*eDrOjZ=*o#>K|v#zV&A#`DInjK3IvHwK&f znP!@@Om5Rg(?_Nf6Ea7dqs`Bo6U?K{ubSsO&CARM<`T$TPs}|zk{iXPK`LF&t>^Y| zrQAjE|NESt59i}}iBINV;+OK6-_9T4PxA}K0`UX!jM!X?gu`a0lp~#x`r1a>PTDGM z#AdkXzy^HCo+MA+qy9F}_CW47#qM7B8 zeD^U2Anlfd`foCUY&;w^No+DC+A-{Sb}~DK-NTl!2ic>b1DAQ1`H=Z@$ZVat-kgz} z!};*-c!8hC7w{h5Wckq2!|Jfkv95#&IxjpCnu+7ZsbU|0ADs8C2Rg>)r2lAbvM0dtE%><_HWK49A!2N+iwtBozpc5@HVnu&|xIsRw< z4*!JjVCii!TCQ7eS?*eVtVz}p)^XOe)++0_)|=Mb))1kekObLcf-qH>AuJG_i-e`Z zo5D)rx^PSACiWCrkr(@j{l$^ue({KSS*#IXfU{w(v`s3Pu1Hs<+i;Q-wm@5$mP~1z z#b$>f9cmj10s0c8)wytHxZu>-ZSz3lIRVD_#-=(`7Hlq@q{+eLQfeiH;C`xxN~DK6 zA*j+JjJDBx=yLi3eU+B!M0N-}k)6$!!(M-7!;D>xu||_|iqT-&#ka9^w5+x4wH&nQ z#87dP_=fm}ctQM+NJ@RA&C)(tU>jRITPItp?LFH8+Zo$kH5Cy=6+tY7!bXmOWVDUk z2Z_C!Y)^HeoIR;=)I#cQNC}@%hrtsnX&@(;QQ- z$z%Ek0`9uG*4&@F!9TI+tzE1ZYa)c!cI#)>&C(g^fz;79(Dt$|Po21iAk@DXdy$D$ zik6Bpsijm5oR!z;i{N3y7QNxevG#oQ)r48E<(CQEs))fD=I{R0ux^EyO6%B)%ZN zA}$vVE{Tuel4g|7N|!)W_oTKqXF90qg6*1(sDt->SgD?jA+6*Bat+y)x-%599;Ez*8T1P@uEY6R|kBs{~&`AjbJxaif(sGYMV94p&}Nm7)J2!c0wVD~T@ zjq{A}8b2_OGS4&To3Z&_xQJ~t?=)X9KQM=K5nL1(&BekMjO193 zkB{QJL&hL^mLJ7C`ThJs{wQAxS+RnzFkN1p0YsBS@ruan%+NuSM$FmQCeS`BWjbhT2SRqjny+bpie6 zGbtH3H>|QXSJ)|>1VhMzUW^q7Kt!dBi^O8_pm;@W5DgM1jgb~g#nM5zan(RfMcD+1 qrOCEMa6{f~E49_A+JYA{^LH`4SZD`^E -- 2.47.3