|  
 Open File Dialog - Printable Version
 
 -Shoutbox (https://shoutbox.menthix.net)
 +-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
 +--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
 +---- Forum: Scripting (/forumdisplay.php?fid=39)
 +----- Thread: Open File Dialog (/showthread.php?tid=63262)
 Open File Dialog by Sh4wn on 07-14-2006 at 04:45 PM
 
How can I create a 'Open file..' Dialog, so a user can select a file, and my script kan get the full path.
 I'm sure it can be done with Interop, but which DLL do I have to use, and which function?
 
 And how can I get the full path then?
 
 
 RE: Open File Dialog by Griffo on 07-15-2006 at 01:07 PM
 
Me to, I would like to know how this is done. I want to get the path to an EXE.
 RE: Open File Dialog by Eljay on 07-15-2006 at 01:15 PM
 
please read Browse For File
 RE: Open File Dialog by Griffo on 07-15-2006 at 01:16 PM
 
You are either not logged in or do not have permission to view this page.   RE: Open File Dialog by andrey on 07-15-2006 at 01:32 PM
 
there's an example in this threaddialog boxes
 
 (is the quote actually taken from the thread Eljay linked to ?)
 RE: Open File Dialog by Eljay on 07-15-2006 at 01:33 PM
 
oops  
 until its moved ill post the important bit here
  
 
 quote:Originally posted by Matty
 This is taken from Choli's Translator, give all credits too him.
 
 
 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;
 }
 
 
 edit:
 quote:Originally posted by andrey
 there's an example in this thread
 dialog boxes
 
 (is the quote actually taken from the thread Eljay linked to ?)
 
 yes it is
   RE: Open File Dialog by Griffo on 07-15-2006 at 02:08 PM
 
Thanks   
 |