WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Functions

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Get Extension from AskFileName If User Did Not Supply One

keyword:
AskFileName Extension Save SaveAs Save As  Open ComDlg32 GetSaveFileName GetSaveFileNameA 

Question:

What is this really required to get the extension from AskFileName if user did not supply one?

Answer:

If you simply want to define a default extension, why not do this:
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