Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ruby and WSH How?

129 views
Skip to first unread message

Andres M. Hidalgo

unread,
Aug 31, 2005, 7:59:24 PM8/31/05
to
Any ideas or links to Ruby and WSH(Windows Scripting Host)?
Can I use Ruby with .HTA(HTML for applications)?.

Thanks
Andres

Takashi Sano

unread,
Aug 31, 2005, 8:29:22 PM8/31/05
to
Hello Andres,

2005/9/1, Andres M. Hidalgo <ahid...@bellatlantic.net>:


> Any ideas or links to Ruby and WSH(Windows Scripting Host)?
> Can I use Ruby with .HTA(HTML for applications)?.

You can do it with ActiveScriptRuby. Though I myself have not experienced that.

There are several sample files in samples folder of the installed location.

Takashi Sano


Zach Dennis

unread,
Aug 31, 2005, 8:46:05 PM8/31/05
to
Takashi Sano wrote:
> Hello Andres,
>
> 2005/9/1, Andres M. Hidalgo <ahid...@bellatlantic.net>:
>
>>Any ideas or links to Ruby and WSH(Windows Scripting Host)?
>>Can I use Ruby with .HTA(HTML for applications)?.

I have used Ruby and WSH. It is beautiful. Documentation is sparse, so
trial and error is a must, although it is really straightforward stuff
once you get used to it. Use Win32OLE to access WSH...

Example:
require 'win32ole'
wscript_shell = WIN32OLE.new( 'WScript.Shell' )
wscript_shell.Popup( 'message', 0, 'title', 1 )

Most WSH commands are executed just like you would execute them in
VBScript...

Here is an examle of how to get system drive information:
require 'win32ole'
drives = []
file_system = WIN32OLE.new( 'Scripting.FileSystemObject' )
file_system.Drives.each { |drv| drives << drv.DriveLetter }
drives

If you want any more hardcore examples I'll see what I can dig up!

Zach

Dave Burt

unread,
Aug 31, 2005, 9:18:38 PM8/31/05
to
Zach wrote:
> I have used Ruby and WSH. It is beautiful. Documentation is sparse...

There is good documentation around! There's the Microsoft website, which has
a complete reference to all their APIs (I think, I haven't checked them
all). But they're a megabyte per page or something ridiculous like that.

Let me recommend DevGuru.com:

WSH Reference: http://devguru.com/technologies/wsh/17346.asp
VBScript ("Scripting") library reference:
http://devguru.com/technologies/vbscript/13990.asp

I also use their quick reference for ASP programming.

Also, back to Ruby's WIN32OLE, every WIN32OLE object has an ole_methods
method which returns all its properties and methods as an array. (Although
in a recent thread I discovered that it doesn't always work; but it will
with the WShell and Scripting libraries.)

Cheers,
Dave


Zach Dennis

unread,
Aug 31, 2005, 10:05:46 PM8/31/05
to

I guess I meant documentation for using WIN32OLE and WScript...etc... I
know that, documentation is one thing MS is good at... I didn't mean to
imply there wasn't documentation on WSH.

Zach


Dave Burt

unread,
Aug 31, 2005, 10:26:53 PM8/31/05
to
Zach Dennis:

> I guess I meant documentation for using WIN32OLE and WScript...etc... I
> know that, documentation is one thing MS is good at... I didn't mean to
> imply there wasn't documentation on WSH.

Well, you're right then. But it is pretty simple. So simple I'm going to
document it right now (ruby-doc.org?).

This is WIN32OLE, from VB:

require 'win32ole'

# Set my_com_object = CreateObject("Library.Class")
my_com_object = WIN32OLE.new("Library.Class")

# Set my_com_object = GetObject("Library.Class")
my_com_object = WIN32OLE.connect("Library.Class")

# For Each com_object In com_collection_object
# '...
# Next
for com_object in com_collection_object
#...
end

# (Press F1 and read the help?)
com_object.ole_methods #=> [Array, Of, All, Methods, And, Properties,
#=> Available, For, This, Object]

And the rest is straightforward. COM properties and methods become methods
of the WIN32OLE object. If there's a Ruby name clash (e.g. a "class"
property), you can either change the case of the method (COM's case
insensitive) (com_object.Class or com_object.cLaSs) or use [] and []=
(com_object['class'] is an lvar).

Cheers,
Dave


0 new messages