matty
Scripting Guru
Posts: 8336 Reputation: 109
39 / /
Joined: Dec 2002
Status: Away
|
RE: Browse For File
This is taken from Choli's Translator, give all credits too him.
js code: var OFN_ENABLESIZING = 0x800000;
var OFN_EXPLORER = 0x80000;
var OFN_FILEMUSTEXIST = 0x1000;
var OFN_HIDEREADONLY = 0x4;
var OFN_LONGNAMES = 0x200000;
var OFN_PATHMUSTEXIST = 0x800;
function OnEvent_Initialize(MessengerStart)
{
var OpenFileName = Interop.Allocate(88);
var filter;
var s_filter;
var file;
var s_file;
var title;
var s_title;
var ret;
var tdata;
with (OpenFileName) {
WriteDWORD(0, Size); // lStructSize
WriteDWORD(4, 0); // hwndOwner
WriteDWORD(8, 0); // hInstance
filter = "Translation files (Lng_*.ini)|Lng_*.ini|All files (*.*)|*.*||";
s_filter = Interop.Allocate(2 * (filter.length + 1));
WriteMultiStringW(s_filter, filter);
WriteDWORD(12, s_filter.DataPtr); // lpstrFilter
WriteDWORD(16, 0); // lpstrCustomFilter
WriteDWORD(20, 0); // nMaxCustomFilter
WriteDWORD(24, 1); // nFilterIndex
file = "Lng_*.ini" + Space(256);
s_file = Interop.Allocate(2 * (file.length + 1));
s_file.WriteString(0, file);
WriteDWORD(28, s_file.DataPtr); // lpstrFile
WriteDWORD(32, file.length); // nMaxFile
WriteDWORD(36, 0); // lpstrFileTitle
WriteDWORD(40, 0); // nMaxFileTitle
WriteDWORD(44, 0); // lpstrInitialDir
title = "Select original file";
s_title = Interop.Allocate(2 * (title.length + 1));
s_title.WriteString(0, title);
WriteDWORD(48, s_title.DataPtr); // lpstrTitle
WriteDWORD(52, OFN_ENABLESIZING | OFN_EXPLORER | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST); // flags
WriteWORD(56, 0); // nFileOffset
WriteWORD(58, 0); // nFileExtension
WriteDWORD(60, 0); // lpstrDefExt
WriteDWORD(64, 0); // lCustData
WriteDWORD(68, 0); // lpfnHook
WriteDWORD(72, 0); // lpTemplateName
WriteDWORD(76, 0); // pvReserved
WriteDWORD(80, 0); // dwReserved
WriteDWORD(84, 0); // FlagsEx
} with OpenFileName
ret = Interop.Call("comdlg32.dll", "GetOpenFileNameW", OpenFileName);
if (ret == 0) {
return;
}
}
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);
}
}
function Space (number) {
var i;
var s = "";
for (i = 0; i < number; i++) {
s += " ";
}
return s;
}
This post was edited on 04-11-2011 at 12:28 PM by matty.
|
|