Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
AskFileName Extension Save SaveAs Save As Open ComDlg32 GetSaveFileName GetSaveFileNameA
types="WIL Files|*.wbt;*.mnu|Text Files|*.txt|" filename = AskFilename("SelectFile", "C:\Temp\", types, "NoExtension", 103) defaultext = ".wbt" If FileExtension(filename ) == "" Then filename = filename : defaultext Message("File selected was", filename) Exit
Or if you need more complete control you can call the ComDlg32 Save As.
;ComDlg32 Save As - MWorrel 10/08/2003 ;If the selected filter has a wildcard in the extension ;(i.e. .*), the extension must be typed in the filename field. ;The default extension is whatever is first in the list. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #DefineFunction DlgSaveAs (FileTypes,DefPath,DefName,Flags) OFN=BinaryAlloc (76) Extn=BinaryAlloc (3) Title=BinaryAlloc (1024) Filters=BinaryAlloc (256) StartDir=BinaryAlloc (StrLen(DefPath)) ;Feed filters into buffer, seperated by nulls BinaryPokeStr (Filters,0,ItemExtract(1,FileTypes,"|")) For EachFltr= 2 To ItemCount (FileTypes,"|") ThisFltr=ItemExtract (EachFltr,FileTypes,"|") BinaryPokeStr (Filters,BinaryEODGet(Filters)+1,ThisFltr) Next BinaryPokeStr (Title,0,DefName) ;Put default name in its buffer BinaryPokeStr (StartDir,0,DefPath) ;Put default path in its buffer BinaryPoke4 (OFN,0,76) ;Set buffer size member Binarypoke4 (OFN,12,IntControl(42,Filters,0,0,0)) ;Point to buffer containing filters BinaryPoke4 (OFN,28,IntControl(42,Title,0,0,0)) ;Point to buffer that recieves file name BinaryPoke4 (OFN,32,1024) ;Tell OPENFILENAME structure size of Title buffer Binarypoke4 (OFN,44,IntControl(42,StartDir,0,0,0)) ;Point to buffer containing default directory BinaryPoke4 (OFN,52,Flags) ;Set flags BinaryPoke4 (OFN,60,IntControl(42,Extn,0,0,0)) ;Point to buffer containing default extension SA=DllCall (StrCat (DirWindows(1),"ComDlg32.dll"),long:"GetSaveFileNameA",lpbinary:OFN) ;Call ComDlg32.dll function ;LastErr=DllCall (StrCat (DirWindows(1),"ComDlg32.dll"),long:"CommDlgExtendedError") ;Get last errorcode ;Message (SA,LastErr) BinaryEODSet (Title,1024) ;Update buffer now that it contains filename FileName=BinaryPeekStr(Title,0,1024) ;Get Filename from buffer and append filetype BinaryFree (OFN) BinaryFree (Extn) BinaryFree (Title) BinaryFree (Filters) BinaryFree (StartDir) Return (FileName) #EndFunction FileTypes="All Files (*.*)|*.*|Text File (*.txt)|*.txt|Log File (*.log)|*.log|Comma-Delimited (*.csv)|*.csv|" FileName=DlgSaveAs (FileTypes,"C:\test","SaveAsTest",2) If FileName=="" Then FileName="" Message ("You Chose:",FileName) Exit ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Flags: ;OFN_ALLOWMULTISELECT = 512 ;OFN_CREATEPROMPT = 8192 ;OFN_ENABLEHOOK = 32 ;OFN_ENABLESIZING = 8388608 ;OFN_ENABLETEMPLATE = 64 ;OFN_ENABLETEMPLATEHANDLE = 128 ;OFN_EXPLORER = 524288 ;OFN_EXTENSIONDIFFERENT = 1024 ;OFN_FILEMUSTEXIST = 4096 ;OFN_HIDEREADONLY = 4 ;OFN_LONGNAMES = 2097152 ;OFN_NOCHANGEDIR = 8 ;OFN_NODEREFERENCELINKS = 1048576 ;OFN_NOLONGNAMES = 262144 ;OFN_NONETWORKBUTTON = 131072 ;OFN_NOREADONLYRETURN = 32768 ;OFN_NOTESTFILECREATE = 65536 ;OFN_NOVALIDATE = 256 ;OFN_OVERWRITEPROMPT = 2 ;OFN_PATHMUSTEXIST = 2048 ;OFN_READONLY = 1 ;OFN_SHAREAWARE = 16384 ;OFN_SHOWHELP = 16 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Error Codes: ;CDERR_GENERALCODES = 0 ;CDERR_STRUCTSIZE = 1 ;CDERR_INITIALIZATION = 2 ;CDERR_NOTEMPLATE = 3 ;CDERR_NOHINSTANCE = 4 ;CDERR_LOADSTRFAILURE = 5 ;CDERR_FINDRESFAILURE = 6 ;CDERR_LOADRESFAILURE = 7 ;CDERR_LOCKRESFAILURE = 8 ;CDERR_MEMALLOCFAILURE = 9 ;CDERR_MEMLOCKFAILURE = 10 ;CDERR_NOHOOK = 11 ;CDERR_REGISTERMSGFAIL = 12 ;CDERR_DIALOGFAILURE = 65535 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Article ID: W15950
File Created: 2013:03:01:10:16:42
Last Updated: 2013:03:01:10:16:42