Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > How to open file dialog in Ruby, and get open FileName? :-(

Reply
Thread Tools

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

 
 
iMelody Ooo
Guest
Posts: n/a
 
      09-23-2010
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/.

 
Reply With Quote
 
 
 
 
iMelody Ooo
Guest
Posts: n/a
 
      09-24-2010
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/.

 
Reply With Quote
 
 
 
 
Charles Calvert
Guest
Posts: n/a
 
      10-19-2010
On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <(E-Mail Removed)>
wrote in <(E-Mail Removed)>:

>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>

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: http://www.velocityreviews.com/forums/(E-Mail Removed)
Contact Address: (E-Mail Removed)
 
Reply With Quote
 
Amit Tomar
Guest
Posts: n/a
 
      10-19-2010
Charles Calvert wrote in post #955442:
> On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <(E-Mail Removed)>
> wrote in <(E-Mail Removed)>:
>
>>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>


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

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

 
Reply With Quote
 
Charles Calvert
Guest
Posts: n/a
 
      10-19-2010
On Thu, 23 Sep 2010 04:58:11 -0500, iMelody Ooo <(E-Mail Removed)>
wrote in <(E-Mail Removed)>:

>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.

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: (E-Mail Removed)
Contact Address: (E-Mail Removed)
 
Reply With Quote
 
Charles Calvert
Guest
Posts: n/a
 
      10-21-2010
On Tue, 19 Oct 2010 09:40:41 -0500, Amit Tomar <(E-Mail Removed)>
wrote in <(E-Mail Removed)>:

>Charles Calvert wrote in post #955442:
>> On Fri, 24 Sep 2010 08:45:53 -0500, iMelody Ooo <(E-Mail Removed)>
>> wrote in <(E-Mail Removed)>:
>>
>>>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>

>
>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.

--
Charles Calvert
Moderator - alt.computer.consultants.moderated
Submission Address: (E-Mail Removed)
Contact Address: (E-Mail Removed)
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
On Clicking on Open button in asp download dialog it open two copy ofexcell file?? chandan ASP .Net Web Controls 0 11-17-2008 08:46 AM
On Clicking on Open button in asp download dialog it open two copy ofexcell file?? chandan ASP .Net 0 11-17-2008 08:44 AM
How to hide the dialog when execute a dialog based application in VC? yw C++ 3 07-02-2005 03:35 AM
display print preview dialog, not print dialog Matt Javascript 1 11-20-2004 01:18 AM



Advertisments