For Programmers: Free Programming Magazines  


Home > Archive > Ruby > August 2005 > Ruby and WSH How?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Ruby and WSH How?
Andres M. Hidalgo

2005-08-31, 7:00 pm

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

Thanks
Andres
Takashi Sano

2005-08-31, 9:56 pm

Hello Andres,

2005/9/1, Andres M. Hidalgo <ahidalgo@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 t=
hat.=20

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

Takashi Sano


Zach Dennis

2005-08-31, 9:56 pm

Takashi Sano wrote:[color=darkred]
> Hello Andres,
>
> 2005/9/1, Andres M. Hidalgo <ahidalgo@bellatlantic.net>:
>

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

2005-08-31, 9:56 pm

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

2005-08-31, 9:57 pm

Dave Burt wrote:
> Zach wrote:
>
>
>
> 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.)
>


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

2005-08-31, 9:57 pm

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


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com