How to open file dialog in Ruby, and get open FileName? :-(

This is a pop MessaheBox example, but I don't know how to open fiel
dialog?

shell = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
shell.Call(0,"hello world","ShadowZ",0)

···

--
Posted via http://www.ruby-forum.com/.

I find an example from http://www.java2s.com , but pop error:

main.rb:21:in `initialize': failed to create WIN32OLE object from
`MSComDlg.CommonDialog' (WIN32OLERuntimeError)
    HRESULT error code:0x80040112

  cd = WIN32OLE.new("MSComDlg.CommonDialog")

  cd.filter = "All Files(*.*)|*.*" +"|Ruby Files(*.rb)|*.rb"
  cd.filterIndex = 2

  cd.maxFileSize = 128 # Set MaxFileSize
  cd.showOpen()
  file = cd.fileName # Retrieve file, path

  if not file or file==""
    puts "No filename entered."
  else
    puts "The user selected: #{file}\n"
  end

···

--
Posted via http://www.ruby-forum.com/.

wrote in <33bff42a89f93b4fe7d81cb0d212aa9d@ruby-forum.com>:

This is a pop MessaheBox example, but I don't know how to open fiel
dialog?

shell = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
shell.Call(0,"hello world","ShadowZ",0)

The signature of this function is:

int MessageBox(
  HWND hWnd, // handle to owner window
  LPCTSTR lpText, // text in message box
  LPCTSTR lpCaption, // message box title
  UINT uType // message box style
);

so your call looks correct at first glance. Note that user32.dll
doesn't export a function named "MessageBox". Instead, it exports
"MessageBoxA" and "MessageBoxW". The former handles ASCII strings and
the latter wide strings (i.e. Unicode). When writing C or C++ code,
one includes the appropriate headers that define the name "MessageBox"
as one of those two using a macro. It may be that you need to call
the appropriate version of the function directly if the Win32API
library doesn't handle that for you.

···

On Thu, 23 Sep 2010 04:58:11 -0500, iMelody Ooo <imelody@msn.com>

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: accm@celticwolf.net
Contact Address: accm_mod@celticwolf.net

wrote in <d61562559868e149eda1814ad5283ae1@ruby-forum.com>:

I find an example from http://www.java2s.com , but pop error:

main.rb:21:in `initialize': failed to create WIN32OLE object from
`MSComDlg.CommonDialog' (WIN32OLERuntimeError)
   HRESULT error code:0x80040112

Most likely you don't have comdlg32.ocx installed on the box. I'd
just use the raw API via comdlg32.dll instead. Here's a thread that I
found on this topic:
<http://www.groupsrv.com/computers/about185459.html&gt;

···

On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <imelody@msn.com>

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: accm@celticwolf.net
Contact Address: accm_mod@celticwolf.net

Charles Calvert wrote in post #955442:

···

On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <imelody@msn.com>
wrote in <d61562559868e149eda1814ad5283ae1@ruby-forum.com>:

I find an example from http://www.java2s.com , but pop error:

main.rb:21:in `initialize': failed to create WIN32OLE object from
`MSComDlg.CommonDialog' (WIN32OLERuntimeError)
   HRESULT error code:0x80040112

Most likely you don't have comdlg32.ocx installed on the box. I'd
just use the raw API via comdlg32.dll instead. Here's a thread that I
found on this topic:
<http://www.groupsrv.com/computers/about185459.html&gt;

Charles is it possible to open this MessageBox on client side??

--
Posted via http://www.ruby-forum.com/\.

wrote in <7efc8bf3561dcf8c2bf70a0a228d67fe@ruby-forum.com>:

Charles Calvert wrote in post #955442:

wrote in <d61562559868e149eda1814ad5283ae1@ruby-forum.com>:

I find an example from http://www.java2s.com , but pop error:

main.rb:21:in `initialize': failed to create WIN32OLE object from
`MSComDlg.CommonDialog' (WIN32OLERuntimeError)
   HRESULT error code:0x80040112

Most likely you don't have comdlg32.ocx installed on the box. I'd
just use the raw API via comdlg32.dll instead. Here's a thread that I
found on this topic:
<http://www.groupsrv.com/computers/about185459.html&gt;

Charles is it possible to open this MessageBox on client side??

As I just responded to you in another thread, this question makes no
sense. The Win32 API is the API for the 32 bit version of Windows,
which is an OS. It is inherently client-side.

···

On Tue, 19 Oct 2010 09:40:41 -0500, Amit Tomar <amittomer25@yahoo.com>

On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <imelody@msn.com>

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: accm@celticwolf.net
Contact Address: accm_mod@celticwolf.net