matty
Scripting Guru
    
Posts: 8328 Reputation: 109
40 / / 
Joined: Dec 2002
Status: Away
|
RE: Save File As Dialog
code: function SaveFileAs(sTitle, sInitialDir){
if (typeof(sTitle) === 'undefined') sTitle = '';
if (typeof(sInitialDir) === 'undefined') sInitialDir = 'C:\\';
var OpenFileName = Interop.Allocate(88);
with (OpenFileName){
WriteDWORD(0, 88); // Dodgy Microsoft, why can't you figure out the size of the struct yourself...
var s_filter = Interop.Allocate(512);
s_filter.WriteString(0, 'All Files (*.*)');
WriteDWORD(12, s_filter.DataPtr);
WriteDWORD(24, 1);
s_file = Interop.Allocate(512);
s_file.WriteString(0, '*.*');
WriteDWORD(28, s_file.DataPtr);
WriteDWORD(32, 255);
var sTmp = Interop.Allocate((254+1)*2);
WriteDWORD(36, sTmp.DataPtr);
WriteDWORD(40, 255);
var s_initdir = Interop.Allocate((sInitialDir.length+1)*2);
s_initdir.WriteString(0, sInitialDir);
WriteDWORD(44, s_initdir.DataPtr);
s_title = Interop.Allocate((sTitle.length+1)*2);
WriteDWORD(48, s_title.DataPtr);
WriteDWORD(52, 0x800000 /* OFN_ENABLESIZING */ | 0x80000 /* OFN_EXPLORER */ | 0x4 /* OFN_HIDEREADONLY */ | 0x200000 /* OFN_LONGNAMES */ | 0x800 /* OFN_PATHMUSTEXIST */ | 0x1000 /* OFN_FILEMUSTEXIST */ | 0x00000002 /* OFN_OVERWRITEPROMPT */);
}
return Interop.Call('comdlg32', 'GetSaveFileNameW', OpenFileName) !== 0 ? s_file.ReadString(0) : false;
}
This post was edited on 08-17-2007 at 01:04 PM by matty.
|
|