Any of you have any idea why this will not work and get the current display pictures file extension?
code:
function SaveFileAs(sTitle, sInitialDir)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.GetFile(Messenger.MyDisplayPicture);
var type = file.substr(file.lastIndexOf(".") + 1);
if (typeof(sTitle) === 'undefined') sTitle = '';
if (typeof(sInitialDir) === 'undefined') sInitialDir = 'C:\\';
var OpenFileName = Interop.Allocate(88);
with (OpenFileName)
{
WriteDWORD(0, 88);
if (type == "jpg") var filter = "jpg-filter-code";
if (type == "png") var filter = "png-filter-code";
//var filter = 'JPEG (*.jpg;*.jpeg)|*.JPEG;*.JPG|';
var s_filter = Interop.Allocate(512);
WriteMultiStringW(s_filter, filter);
WriteDWORD(12, s_filter.DataPtr);
WriteDWORD(24, 1);
s_file = Interop.Allocate(512);
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_OVERWRITEPROMPT */);
}
file.Copy(Interop.Call('comdlg32', 'GetSaveFileNameW', OpenFileName) !== 0 ? s_file.ReadString(0) : false);
function WriteMultiStringW(datablock, string)
{
var pos = 0;
datablock.WriteString(0, string);
pos = string.indexOf("|", pos);
while (pos != -1)
{
datablock.WriteWORD(2 * pos, 0);
pos = string.indexOf("|", pos + 1);
}
}
}
Sorry about the formatting, if you want go here:
http://pastebin.com/d7794d483